在我的應用程序時,我有添加好友我通常發送訂閱包4倍 即註銷添加好友在XMPP咂嘴
A-> B(訂閱) B-> A(認購) BA(訂閱) A-> B(訂閱)
每個步驟I的狀態立即改變在服務器上看到後。
但是在我的應用程序中,它只能在LOGGING OUT和LOGGING之後再次反映出來。 在他添加好友之後,他必須註銷一次,然後他的好友名單上將顯示好友>
問題是什麼?我已經找到了很多,但因此未發現任何錯誤:(
沒有錯誤顯示在logcat中。
我還印製了syso輸出的每個數據包被髮送後,它總是說爲NONE(此案。發送請求的人)和總是說TO/FROM(在發送好友請求的用戶的情況下)。兩者都沒有被反映出來,直到一個人退出並重新登錄。
請幫我:(
Add Friend Function
public boolean addFriend(String jid) {
String nickname = null;
String idExtension = jid+"@abc.hostname.com";
nickname = StringUtils.parseBareAddress(jid);
if (!roster.contains(idExtension)) {
try {
roster.createEntry(idExtension, nickname, null);
//to subscribe the user in the entry
Presence subscribe = new Presence(Presence.Type.subscribe);
subscribe.setTo(idExtension);
connection.sendPacket(subscribe);
return true;
} catch (XMPPException e) {
System.err.println("Error in adding friend");
return false;
}
} else {
return false;
}
}
它會se ND通知其他用戶..在允許此代碼被寫入: -
btn_Allow = (Button)findViewById(R.id.btn_manageNotification_ALLOW);
btn_Allow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//accept the friends subscription
Presence subscribed = new Presence(Presence.Type.subscribed);
subscribed.setTo(id);
connection.sendPacket(subscribed);
mCustomProgressDialog = CustomProgressDialog.createDialog(
ManageNotification.this, "", "");
mCustomProgressDialog.show();
mCustomProgressDialog.setCancelable(false);
new Thread(){
public void run() {
try {
sleep(5000);
//mXmconn.getContactList();
/*Presence subscribed = new Presence(Presence.Type.subscribe);
subscribed.setTo(id);
System.out.println("The user is :"+id);
connection.sendPacket(subscribed);*/
} catch (InterruptedException e) {}
mReturnUserMenu.sendEmptyMessage(0);
};
}.start();
}
});
相同則再次上進行再次允許誰發起請求的用戶。
請幫忙。訂閱狀態在服務器上立即發生變化,但是在註銷一次後它將更新。
這裏是代表名單
public void getContactList(){
roster = connection.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
System.out.println("Total=="+entries.size());
mfriendList.clear();
mfriendPendingList.clear();
mfriendRequestList.clear();
for (RosterEntry entry : entries) {
mFriendsDataClass = new FriendsDataClass();
mFriendsDataClass.friendName = entry.getUser().toString();
String user = entry.getUser();
int index_of_Alpha = user.indexOf("@");
/*System.out.println("The current working user is : "+user);
System.out.println("His status is"+entry.getType().toString());*/
String subID = user.substring(0, index_of_Alpha);
Presence availability = roster.getPresence(user);
Mode userMode = availability.getMode();
mFriendsDataClass.availability = "";
mFriendsDataClass.friendNickName = subID;
mFriendsDataClass.friendStatus = stusMsg.toString();
mFriendsDataClass.friendState = retrieveState_mode(availability.getMode(),availability.isAvailable());
if(entry.getType().toString().equalsIgnoreCase("to")){
//getContactList();
mfriendRequestList.add(mFriendsDataClass);
}else if(entry.getType().toString().equalsIgnoreCase("from")){
//getContactList();
mfriendPendingList.add(mFriendsDataClass);
}else if(entry.getType().toString().equalsIgnoreCase("both")){
//getContactList();
mfriendList.add(mFriendsDataClass);
}
}
}
感謝
請提供一些代碼,因爲它很難回答這個使用這個場景,但我會建議你做一個刷新按鈕,它可以作爲一個登錄,並再次重新加載的一切,你也可以保存用戶名稱和密碼,並重新登錄,而用戶不知道它 –
@GirishNair用戶正在與其他人聊天什麼?連接將丟失然後? 有什麼辦法刷新xmpp連接? :( –
保存聊天信息,並嘗試重新加載。你有沒有檢查過這個http://stackoverflow.com/questions/9632865/reset-the-xmpp-connection-if-the-page-gets-refreshed –