2012-09-21 51 views
1

我正在使用下面的代碼發送好友請求給任何用戶其工作正常,但我無法從名單中找到連接的用戶。android smack訂閱用戶不工作

現在我想知道如何識別名冊中的新請求的朋友。

Roster roster = XMPPSmackConnection.getInstance().connection.getRoster(); 
roster.setSubscriptionMode(Roster.SubscriptionMode.manual); 
try { 
    if(!_userName.contains("@")) 
     _userName=_userName+"@204.93.197.136"; 

    Presence response = new Presence(Presence.Type.subscribe); 
    response.setTo(_userName); 
    XMPPSmackConnection.getInstance().connection.sendPacket(response); 

    //roster.createEntry(_userName, _nickName, my_friends[]); 
    //addBuddy(_userName, _nickName, Friends); 
} catch (Exception e) { 
    _progDailog.dismiss(); 
    e.printStackTrace(); 
} 

回答

4

我一直在試圖解決類似問題,即名冊列表不更新接受了朋友的請求。 步驟如下: -

  1. 使用存在型發送好友請求作爲訂閱
  2. 在另一端,在接受朋友的請求,訂閱存在類型被髮送
  3. 在接收到該訂閱Presence數據包,另訂訂閱數據包發回。

服務器的名單列表根據訂閱類型立即更新爲兩者,但名冊條目不是。 此外,名冊的訂閱模式設置爲手冊,它也附帶一個PacketListener。

請提供一些幫助,爲此問題提供解決方案?這將有很大的幫助。

感謝和問候, 瓦德站

+0

非常感謝瓦德站... – hharry

+0

這方面工作,但有一段時間,我沒有得到更新名冊。我也使用PacketLister來識別所有類型的通知。你能告訴我一些關於這個句子的具體情況......它也附帶了一個PacketListener ......我如何使用數據包監聽器進行訂閱和訂閱 – hharry

+0

這也是我的問題......是你能夠通過使用Packet Listener獲取更新的名單? –