1

我正在使用 asmack 在我的应用程序中聊天。运行以下代码时出现错误。

mXmppConnection=connectionToXmppServer(HOST, PORT, SERVICE, mUserName, mPassword);      

/*creating new chat room*/
MultiUserChat muc = new MultiUserChat(mXmppConnection, "DestinationCountry@conference.domainname");

try {

    /*to create chat room*/

    /*sending configration to server*/
      muc.join(mUserName);
     Form form = muc.getConfigurationForm();
      Form answerForm = form.createAnswerForm();

      answerForm.setAnswer("muc#roomconfig_persistentroom", true);

      muc.sendConfigurationForm(answerForm);

    /*muc.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));*/

/*  muc.join("jack");*/

    muc.sendMessage("i just joined the room");
    Log.i("room name", muc.getRoom());
     muc.addMessageListener(new PacketListener() {
            @Override
            public void processPacket(Packet packet) {

                Message mess = (Message) packet;
                Log.i("msg ",mess.getFrom() + ": " + mess.getBody());
            }
        });


} catch (XMPPException e) {

    Toast.makeText(getApplicationContext(), "test room failed",
            Toast.LENGTH_SHORT).show();
}

下面是我得到的错误

02-15 17:54:28.409: E/AndroidRuntime(24400):    at java.lang.Thread.run(Thread.java:856)
02-15 17:54:28.409: E/AndroidRuntime(24400): Caused by: java.lang.NullPointerException
02-15 17:54:28.409: E/AndroidRuntime(24400):    at com.example.groupchat.GroupChat$ConnectTOChatServer.doInBackground(GroupChat.java:174)
02-15 17:54:28.409: E/AndroidRuntime(24400):    at     com.example.groupchat.GroupChat$ConnectTOChatServer.doInBackground(GroupChat.java:1)
02-15 17:54:28.409: E/AndroidRuntime(24400):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-15 17:54:28.409: E/AndroidRuntime(24400):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
4

1 回答 1

-1

在创建 Muc 之前或登录之后调用此函数。

public 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 org.jivesoftware.smackx.bytestreams.socks5.provider.BytestreamsProvider());

    // 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());
}
于 2014-11-02T14:47:54.677 回答