【问题标题】:adding user in roster list isn't working在花名册列表中添加用户不起作用
【发布时间】:2018-02-02 10:47:50
【问题描述】:

我正在创建一个简单的一对一聊天应用程序,我已经完成了消息的发送和接收。现在我正在尝试向另一个(联系人)显示用户的状态,例如“在线/离线”等。为此,我必须使用 Presence 和 Roster。但我不知道在哪里以及如何使用它,我的意思是订阅请求和接受的完整流程以及订阅后的用户状态,即在线/离线等。

【问题讨论】:

  • 你试过了吗?

标签: android xmpp


【解决方案1】:

首先您需要发送并接受联系请求

Open-fire你也可以从后端

步骤: 首先点击用户/组>>点击“用户名”>>点击名册>>添加名册

这里我附上步骤屏幕

  • 点击添加新项目

  • 添加花名册

  • 编辑名册并同时选择订阅

然后您将使用此代码获得名册列表

ArrayList<RosterEntry> rosterLists = new ArrayList<>();

 public List<RosterEntry> getFriendsList() throws SmackException.NotLoggedInException, InterruptedException, SmackException.NotConnectedException {
    rosterLists = new ArrayList<>();
    roster = Roster.getInstanceFor(Config.conn1);//connection object of AbstractXMPPConnection
    if (!roster.isLoaded()) {
        roster.reloadAndWait();
        Log.e("Roster :", "Reload and wait");
    }

    Collection<RosterEntry> entries = roster.getEntries();
    Log.e("Size of Roster :", entries.size() + "");

    for (RosterEntry entry : entries) {
        rosterLists.add(entry);
        Log.d("Buddies", "Here: " + entry.toString());
        Log.d("Buddies", "User: " + entry.getUser());//get userinfo
        Log.d("Buddies", "User Name:" + entry.getName());//get username
        Log.d("Buddies", "User Status: " + entry.getStatus());//get status of user
    }
    listAdapter = new FriendUserListAdapter(UserListActivity.this, rosterLists);
    user_list.setAdapter(listAdapter);
    return rosterLists;
}

订阅类型和订阅类型有什么区别??? 当任何用户添加 bot 有他/她的联系人时,在整个过程结束时,ofRoster(openfire) 表的订阅状态设置为“来自”。这个过程的期望结果是“两者”

【讨论】:

  • 我在 Openfire 中创建了两个用户,当我尝试将用户添加到名册中时,我可以在 openfire 中看到两个用户的名册列表。但就我而言,订阅类型来自一个混淆。两个用户都以编程方式订阅。那么订阅类型和订阅类型有什么区别???
  • 当任何用户添加bot有他/她的联系人时,那么在整个过程结束时,ofRoster(openfire)表的订阅状态设置为'from'。这个过程的期望结果是“两者”。
  • 希望我的回答对您有帮助,请您点赞和打勾吗?
  • 您想要获取名册列表的位置,它将在用户列表中返回
猜你喜欢
  • 2016-05-04
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 2018-07-08
相关资源
最近更新 更多