2007-11-1 9:50:49
JMSN-MSNM-LIB如何获得好友列表,主动向好友发送消息的方法
怎么读取当前在线的好友列表,资料所在地:http://access911.net/n/doc1.asp?mode=a&aid=4932535
在JMSN\BuddyTree.java文件中
public void userOnline( final MsnFriend friend )
{
final String loginName = friend.getLoginName();
final String formatStatus = UserStatusBox.getFormattedUserStatus(friend.getStatus());
final String formatName = friend.getFormattedFriendlyName();
SwingUtilities.invokeLater( new Runnable() {
public void run() {
DefaultMutableTreeNode node = findTreeNode(friend);
BuddyList list = msnm.getBuddyGroup().getForwardList();
MsnFriend old = list.get( loginName );
// 扁粮俊 乐菌绊, 惑怕父 函版窍看阑 版快(捞傈惑怕啊 OFFLINE捞 酒囱版快)
if( node!=null && !UserStatus.OFFLINE.equals(old.getOldStatus()) )
{
main.addEvent( formatStatus + " " + formatName +
" (" + loginName + ")", friend );
old.setFriendlyName( friend.getFriendlyName() );
old.setStatus( friend.getStatus() );
node.setUserObject( old );
node.removeFromParent();
DefaultMutableTreeNode group = findGroupNode( old.getGroupIndex() );
insertPreferredIndex( group, old, node );
model.reload( group );
}
// 扁粮俊 绝菌芭唱, 乐菌绰单 坷橇扼牢捞看阑 版快
else
{
if( node==null )
{
friend.setGroupIndex( old.getGroupIndex() );
node = new DefaultMutableTreeNode(friend);
DefaultMutableTreeNode group = findGroupNode(friend.getGroupIndex());
insertPreferredIndex( group, friend, node );
model.reload( group );
}
else
{
node.removeFromParent();
node.setUserObject( friend );
DefaultMutableTreeNode group = findGroupNode(friend.getGroupIndex());
insertPreferredIndex( group, friend, node );
model.reload( group );
}
refreshGroupNode();
main.addEvent( Msg.get("event.login", loginName, formatName), friend );
MusicBox.play( MusicBox.SOUND_LOGIN );
}
}});
}
另一个人的回答:
void syncAllUsers() {
if (root == null || model == null)
return;
root.removeAllChildren();
for (Iterator i = groupMap.values().iterator(); i.hasNext();) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) i.next();
node.removeAllChildren();
}
groupMap.clear();
// // /上面清空了好友列表,下面获得并添加好友分组
GroupList gl = msnm.getBuddyGroup().getGroupList();
gl.sort();
for (Iterator i = gl.iterator(); i.hasNext();) {
Group group = (Group) i.next();
DefaultMutableTreeNode node = new DefaultMutableTreeNode(group);
root.add(node);
groupMap.put(group.getIndex(), node);
}
// // /在这里获得并添加所有好友
// // 想得到好友列表? 在这里得添加 String loginNames = new String("");
BuddyList bl = msnm.getBuddyGroup().getForwardList();
bl.sort(comparator);
for (Iterator i = bl.iterator(); i.hasNext();) {
MsnFriend friend = (MsnFriend) i.next();
// ////// 想获得好友列表的STRING???? 你从程序中可以看出,好友列表其实是每个好友单独处理的
// //// /如果想得到一个"好友1+好友2..."这样的字串,自己在这里添加代码吧
// //// 另外,别奢望脱离这个框架,只用几行代码就完成这事,那样你得和作者联系.
loginNames = loginNames + "+" + friend.getLoginName();
// ////////////// /
if (!offView && friend.getStatus().equals(UserStatus.OFFLINE))
continue;
DefaultMutableTreeNode node = findGroupNode(friend
.getGroupIndex());
DefaultMutableTreeNode fnode = new DefaultMutableTreeNode(
friend);
node.add(fnode);
}
model.reload();
recoverExpandState();
}
主动向好友发送消息的方法
messenger.doCall("aaaa@hotmail.com");
boolean flag = false;
while(!flag)
{
flag = messenger.sendMessage("aaaa@hotmail.com",mime);
}
在http://www.javatx.cn/clubPage.jsp?ccID=18&tID=1053&ccStyle=0&iPage=1这里也找到了一些资料,如下:
MSNMessenger messenger = new MSNMessenger(getUserName(), getPassword());
messenger.setInitialStatus(UserStatus.OFFLINE);
messenger.login();
List mailList = new ArrayList();
BuddyList list = messenger.getBuddyGroup().getAllowList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
MsnFriend friend = (MsnFriend) iter.next();
System.out.println(friend.getLoginName());
mailList.add(friend.getLoginName());
}
messenger.logout();
另外,在CSDN里也能找到一些东西,(http://search.csdn.net/里搜索jmsn,有好多).不过,重复的东西太多了,哎,而且,有用的也不多,质量啊..........
java往msn发消息的功能(http://topic.csdn.net/u/20070718/18/39f19276-0d1a-4f23-a498-0c0fcfb5b8ac.html)
// 去下载 jmsn包;
public class JMsnTest extends Thread {
private static MSNMessenger msn;
public static void main(String[] args) {
msn = new MSNMessenger("msn@yahoo.com.cn ", "mima "); // 发送人
// msn.setInitialStatus(UserStatus.ONLINE);
msn.addMsnListener(new MSNAdapter(msn));
msn.login();
MimeMessage me = new MimeMessage("ok ");
me.setKind(MimeMessage.KIND_MESSAGE);
try {
Thread.currentThread().sleep(1500);
msn.doCall("lvchuang47@yahoo.com.cn "); // 接收人
} catch (Exception e) {
e.printStackTrace();
}
System.out
.println("Waiting for the response.... ");
Runtime.getRuntime().addShutdownHook(new JMsnTest());
}
public void run() {
msn.logout();
System.out.println("MSN Logout OK ");
}
}
class MSNAdapter extends MsnAdapter {
MSNMessenger messenger;
public MSNAdapter(MSNMessenger messenger) {
this.messenger = messenger;
}
public void switchboardSessionStarted(
SwitchboardSession switchboardsession) {
MimeMessage hello = new MimeMessage("hello ");
hello.setKind(MimeMessage.KIND_MESSAGE);
try {
boolean sendok = messenger.sendMessage(hello,
switchboardsession);
switchboardsession.sendMessage(hello);
System.out.println("sendok = " + sendok);
} catch (Exception e) {
e.printStackTrace();
}
}
}
//Thread.currentThread().sleep(1500);
//是等待登录的时间,不设置 容易发不出去
Tags: MSN QQ 机器人 |
原创文章如转载,请注明:转载自:巴士飞扬-技术BLOG : http://www.busfly.net/
本文链接地址:http://www.busfly.net/post/JMSN-MSNM-LIB-friends.html
如果你喜欢本文,请顶一下,支持我,你的支持是我继续发好文章的最大动力。谢谢。
好东西需要分享,快把本文发给你的朋友吧~!~