07 December 2010
Android connect to MSN (JML)

在Android用Java MSN Messenger Library(JML)登入

其實JML是一個很好用的lib,

在J2SE的環境下使用非常好整合,

BUT...要整合至ANDROID中會有幾個小問題。

第一:會少了一個GetPropertyAction的CLASS

第二:JML裡用的SSL是採取SSLv3,但是android只能支援TLS

第三:一樣會少了一個DatatypeFactory這個CLASS

解決方法就是

直接去找到JML的source code,

直接拿它來做修改,而不是直接去拿jar來用。

為了解決第一部,

我們可以在網路上找到人家寫好的這個class(GetPropertyAction)

來這下載

下載好以後,記得放在package名稱為sun.security.action的底下



解決第二個方法就是

去下載JML的SOURCE CODE

來這下載 (是載.ZIP檔案喔,這樣才會有SOURCE CODE)

下載完成後,把src資料夾底下的net通通拉進來我們的project裡面

拉進來後,畫面會如下





















拉進來以後,

找到package名稱為net.sf.jml.protocol.soap,

點兩下展開以後,

點選class名稱為ContactList的class

打開以後找到下面那行CODE

    SSLContext sc = SSLContext.getInstance("SSLv3");


把它改成下面那行CODE


    SSLContext sc = SSLContext.getInstance("TLS");


這樣第二部就解決了。

至於第三個解決方式,

目前是先把ANDROID SDK設為2.2,

2.2就有支援DatatypeFactory,



接著來寫連結至msn的code了。

其實很簡單,你只要克服上面的問題,

CODE應該就難不倒你,

    try {
final String email = "msn帳號";
final String password = "您的密碼";
final MsnMessenger messenger = MsnMessengerFactory.createMsnMessenger(email,
password);

messenger.getOwner().setInitStatus(MsnUserStatus.ONLINE);

//這邊一定要用thread去執行登入
Thread thread = new Thread(new Runnable() {
public void run() {
messenger.login();
}
});

thread.start();


} catch (Exception e) {
Log.d("msn",e.toString());
}





這樣就完成了MSN登入了。

至於怎麼截取聯絡人清單,只要您解決上面那三個問題

則擷取連絡人,就不是問題了。





blog comments powered by Disqus