在android中创建群聊功能并从服务器获取无响应..在muc.create()上

时间:2012-09-12 14:33:41

标签: android xmpp

我可以通过ejabbered进行一对一的聊天。在wifi上使用我的Ip在设备之间成功本地服务器设置。但是在创建群聊时

 MultiUserChat muc = new MultiUserChat(conn1, "myroom@conference.jabber.org");
 muc.create("testbot");

在搜索时,我发现muc.create()存在问题,请改用muc.join()。 但我想先创造d房间。我不确定服务器端或客户端是否存在问题

http://www.igniterealtime.org/builds/smack/docs/latest/documentation/extensions/muc.html#create

1 个答案:

答案 0 :(得分:2)

我自己找到了解决方案。 Dere在smack库中没有问题,而是缺少配置设置。复制并粘贴以下方法,并在登录时调用它。

public static void configure(ProviderManager pm) {

    // Private Data Storage

    pm.addIQProvider("query", "jabber:iq:private",
            new PrivateDataManager.PrivateDataIQProvider());

    // Time

    try {

        pm.addIQProvider("query", "jabber:iq:time",
                Class.forName("org.jivesoftware.smackx.packet.Time"));

    } catch (ClassNotFoundException e) {

        Log.w("TestClient",
                "Can't load class for org.jivesoftware.smackx.packet.Time");

    }

    // Roster Exchange

    pm.addExtensionProvider("x", "jabber:x:roster",
            new RosterExchangeProvider());

    // Message Events

    pm.addExtensionProvider("x", "jabber:x:event",
            new MessageEventProvider());

    // Chat State

    pm.addExtensionProvider("active",
            "http://jabber.org/protocol/chatstates",
            new ChatStateExtension.Provider());

    pm.addExtensionProvider("composing",
            "http://jabber.org/protocol/chatstates",
            new ChatStateExtension.Provider());

    pm.addExtensionProvider("paused",
            "http://jabber.org/protocol/chatstates",
            new ChatStateExtension.Provider());

    pm.addExtensionProvider("inactive",
            "http://jabber.org/protocol/chatstates",
            new ChatStateExtension.Provider());

    pm.addExtensionProvider("gone",
            "http://jabber.org/protocol/chatstates",
            new ChatStateExtension.Provider());

    // XHTML

    pm.addExtensionProvider("html", "http://jabber.org/protocol/xhtml-im",
            new XHTMLExtensionProvider());

    // Group Chat Invitations

    pm.addExtensionProvider("x", "jabber:x:conference",
            new GroupChatInvitation.Provider());

    // Service Discovery # Items

    pm.addIQProvider("query", "http://jabber.org/protocol/disco#items",
            new DiscoverItemsProvider());

    // Service Discovery # Info

    pm.addIQProvider("query", "http://jabber.org/protocol/disco#info",
            new DiscoverInfoProvider());

    // Data Forms

    pm.addExtensionProvider("x", "jabber:x:data", new DataFormProvider());

    // MUC User

    pm.addExtensionProvider("x", "http://jabber.org/protocol/muc#user",
            new MUCUserProvider());

    // MUC Admin

    pm.addIQProvider("query", "http://jabber.org/protocol/muc#admin",
            new MUCAdminProvider());

    // MUC Owner

    pm.addIQProvider("query", "http://jabber.org/protocol/muc#owner",
            new MUCOwnerProvider());

    // Delayed Delivery

    pm.addExtensionProvider("x", "jabber:x:delay",
            new DelayInformationProvider());

    // Version

    try {

        pm.addIQProvider("query", "jabber:iq:version",
                Class.forName("org.jivesoftware.smackx.packet.Version"));

    } catch (ClassNotFoundException e) {

        // Not sure what's happening here.

    }

    // VCard

    pm.addIQProvider("vCard", "vcard-temp", new VCardProvider());

    // Offline Message Requests

    pm.addIQProvider("offline", "http://jabber.org/protocol/offline",
            new OfflineMessageRequest.Provider());

    // Offline Message Indicator

    pm.addExtensionProvider("offline",
            "http://jabber.org/protocol/offline",
            new OfflineMessageInfo.Provider());

    // Last Activity

    pm.addIQProvider("query", "jabber:iq:last", new LastActivity.Provider());

    // User Search

    pm.addIQProvider("query", "jabber:iq:search", new UserSearch.Provider());

    // SharedGroupsInfo

    pm.addIQProvider("sharedgroup",
            "http://www.jivesoftware.org/protocol/sharedgroup",
            new SharedGroupsInfo.Provider());

    // JEP-33: Extended Stanza Addressing

    pm.addExtensionProvider("addresses",
            "http://jabber.org/protocol/address",
            new MultipleAddressesProvider());

    // FileTransfer

    pm.addIQProvider("si", "http://jabber.org/protocol/si",
            new StreamInitiationProvider());

    pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams",
            new BytestreamsProvider());

    pm.addIQProvider("open", "http://jabber.org/protocol/ibb",
            new IBBProviders.Open());

    pm.addIQProvider("close", "http://jabber.org/protocol/ibb",
            new IBBProviders.Close());

    pm.addExtensionProvider("data", "http://jabber.org/protocol/ibb",
            new IBBProviders.Data());

    // Privacy

    pm.addIQProvider("query", "jabber:iq:privacy", new PrivacyProvider());

    pm.addIQProvider("command", "http://jabber.org/protocol/commands",
            new AdHocCommandDataProvider());

    pm.addExtensionProvider("malformed-action",
            "http://jabber.org/protocol/commands",
            new AdHocCommandDataProvider.MalformedActionError());

    pm.addExtensionProvider("bad-locale",
            "http://jabber.org/protocol/commands",
            new AdHocCommandDataProvider.BadLocaleError());

    pm.addExtensionProvider("bad-payload",
            "http://jabber.org/protocol/commands",
            new AdHocCommandDataProvider.BadPayloadError());

    pm.addExtensionProvider("bad-sessionid",
            "http://jabber.org/protocol/commands",
            new AdHocCommandDataProvider.BadSessionIDError());

    pm.addExtensionProvider("session-expired",
            "http://jabber.org/protocol/commands",
            new AdHocCommandDataProvider.SessionExpiredError());

}