在android aSmack中,PrivacyListManager.getInstanceFor为NULL。

4
我正在使用aSmack库实现与XMPP服务器的连接。连接和聊天功能正常。但是,当我使用PrivacyManagerList来实现阻止用户时,它会返回NULL。
public void blockUser(String listName, String user) {
        // Set the name of the list
        listName = "newList";

        String groupName = "enemies";
        ArrayList privacyItems = new ArrayList();

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

        // Get the privacy manager for the current connection.
        PrivacyListManager privacyManager = PrivacyListManager
                .getInstanceFor(connection);
        // Create the new list.
        try {
            privacyManager.createPrivacyList(listName, privacyItems);
        } catch (XMPPException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

这是文档中的代码,但它并不起作用。PrivacyListManager总是为空。 请帮忙解决这个问题。 谢谢!


嗨,rasulzhan,你解决了这个问题吗?我也遇到了这个问题并正在寻找解决方案。如果你有解决方案,请帮助我。谢谢。 - shyam.y
2个回答

1
在执行 XMPPConnection.connect() 前,只需使用 Class.forName(PrivacyListManager.class.getName())。

真的很糟糕的解决方案。不要使用反射。它可能在运行时失败。 - Harshit Bangar

0

使用

PrivacyListManager privacyManager = new PrivacyListManager(connection);

这是一个私有构造函数。构造函数PrivacyListManager(Connection)不可见。 - shyam.y
嗨,AamirAli,如果您解决了这个问题,请帮助我。 - shyam.y
@sham.y,这不是私有构造函数,请更新您的XMPP库。 - Muhammad Aamir Ali
AamirAli,感谢您的回复。 我正在使用最新的asmack库。在其中,它是一个私有构造函数。请指导我解决此问题的其他方法。 - shyam.y
嗨,Aamir,你能为我提供这个ProviderManager代码吗?Java中阻止用户代码运行良好。在asmack中,PrivacylistManager为空。 - shyam.y

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接