2012-10-10 18 views
5

Tôi mới sử dụng thư viện smack và tạo một ứng dụng trò chuyện. Tôi đã thực hiện tối đa mức độ và ở bước này tôi muốn hỏi hai câu hỏi.Android THÊM BẠN B using sử dụng Smack

  1. khi tôi thêm một người bạn mà bạn bè đã thêm vào danh sách của tôi nhưng không có bất kỳ thông báo nào gửi tới FRIEND mà tôi đã thêm, Cách đạt được điều tương tự. Tôi đã thêm mã bên dưới. Điều thứ hai tôi muốn hỏi là làm thế nào tôi có thể kiểm tra xem người dùng mà tôi sẽ thêm là một phần hay thành viên của ứng dụng hay không (có nghĩa là nó là trên máy chủ hay không). Vì vậy, người dùng không được đăng ký vào ứng dụng sẽ không được thêm vào danh sách bạn bè.

đây là mã

public static boolean addFriend(String jid) { 
      String nickname = null; 
      nickname = StringUtils.parseBareAddress(jid); 
      RosterEntry entry4 = roster.getEntry("samsad"); 
      if (!roster.contains(jid)) { 
       try { 
        Presence subscribe = new Presence(Presence.Type.subscribe); 
        subscribe.setTo(jid);    
        connection.sendPacket(subscribe);    
        roster.createEntry(jid, nickname, null); 
         // Send a roster entry (any) to user2 
        RosterExchangeManager REM = new RosterExchangeManager(connection); 
        REM.send(entry4, jid); 
        return true; 
       } catch (XMPPException e) { 
        System.err.println("Error in adding friend"); 
        return false; 
       } 
      } else { 
       return false; 
      } 
     } 

quản lý Roster Trao đổi chạy trong dịch vụ trong nền

/**Remotr Exchange Manager*/ 
      RosterExchangeManager rem = new RosterExchangeManager(connection); 
       // Create a RosterExchangeListener that will iterate over the received roster entries 
       RosterExchangeListener rosterExchangeListener = new RosterExchangeListener() { 
        public void entriesReceived(String from, Iterator remoteRosterEntries) { 
         notification("Receive==4"); 
         while (remoteRosterEntries.hasNext()) { 
          try { 
           // Get the received entry 
           RemoteRosterEntry remoteRosterEntry = (RemoteRosterEntry) remoteRosterEntries.next(); 
           // Display the remote entry on the console 
           System.out.println(remoteRosterEntry); 
           // Add the entry to the user2's roster 
           roster.createEntry(
            remoteRosterEntry.getUser(), 
            remoteRosterEntry.getName(), 
            remoteRosterEntry.getGroupArrayNames()); 
           notification("Receive==1"); 
          } 
          catch (XMPPException e) { 
           e.printStackTrace(); 
          } 
         } 
        } 
       }; 
       rem.addRosterListener(rosterExchangeListener); 
     } 
     else{ 
      showToast("Connection lost-",0); 
     } 
    } 
+0

@Trickster, vui lòng trả lời ngay –

Trả lời

1

1, Vấn đề là bạn phải đăng ký một PacketListener cho Presence.Type.subscribe trước khi bạn kết nối với máy chủ. Tất cả quy trình thêm và chấp nhận bạn bè tôi đã trả lời trong here

2, Bạn có thể sử dụng UserSearch để tìm người dùng cụ thể và nếu không tìm thấy người dùng trên máy chủ thì người dùng đó không được đăng ký trên máy chủ.

+0

Ví dụ về mã mà từ đó tôi có thể kiểm tra xem người đó có khả dụng trên máy chủ không ?? –

+1

Hãy giúp tôi trong việc này: ( –

+0

Hãy thử [this] (http://stackoverflow.com/a/6936698/1050058) giải pháp thay thế cho ** 2. ** –

Các vấn đề liên quan