使用smack和开放式服务器阻止聊天列表中的用户的问题

Gan*_*hik 7 android xmpp smack asmack

我想阻止聊天列表中的某位朋友XMPP.代码工作正常.没有例外,但我无法阻止用户.我正在使用开火服务器.我应该在服务器上做些什么改变?

你们有什么想法吗?

我的代码:

public void XMPPAddNewPrivacyList(Connection connection, String userName) {

    String listName = "newList";

    // Create the list of PrivacyItem that will allow or
    // deny some privacy aspect

    List<PrivacyItem> privacyItems = new Vector<PrivacyItem>();

    PrivacyItem item = new PrivacyItem(PrivacyItem.Type.jid.toString(),
            false, 1);
    item.setValue(userName);
    privacyItems.add(item);

    // Create the new list.

    try {
        PrivacyListManager privacyManager = new PrivacyListManager(connection);
        privacyManager = PrivacyListManager
                .getInstanceFor(connection);
        privacyManager.createPrivacyList(listName, privacyItems);

    } catch (XMPPException e) {
        System.out.println("PRIVACY_ERROR: " + e);
    }
}
Run Code Online (Sandbox Code Playgroud)

Fai*_*han 5

尝试这个 ...

public boolean blockFriend(String friendName) {

    PrivacyItem item=new PrivacyItem(PrivacyItem.Type.jid,friendName, false, 7);
    PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(connection);
    List<PrivacyItem> list=new ArrayList<PrivacyItem>();
    list.add(item);

    try {
        privacyManager.updatePrivacyList(NEWLIST, list);
        privacyManager.setActiveListName(NEWLIST);
        return true;
    } catch (SmackException.NoResponseException |XMPPException.XMPPErrorException | SmackException.NotConnectedException e) {
        e.printStackTrace();
        return false;
    }


}
Run Code Online (Sandbox Code Playgroud)

对于unblock,只需在privacyitem对象中将false替换为true即可。


4gu*_*71n 0

我认为问题应该是以下之一:

  • 用户名不正确,例如“someuser@myxmppserver.com”。
  • 您没有监听隐私更改我的意思是,您没有实现 PrivacyListListener 接口。
  • 在 PrivacyItem 构造函数中,您不应该使用 PrivacyRule.JID 而不是 PrivacyItem.Type.jid.toString() 吗?
  • 如果您想阻止朋友,您不应该使用 updatePrivacyList 而不是 createPrivacyList。

我建议您仔细查看文档 Smack 文档