4

Can not create a multi-user discussion room (MUC) with a support library for And...

 2 years ago
source link: https://www.codesd.com/item/can-not-create-a-multi-user-discussion-room-muc-with-a-support-library-for-android-packet-defaultpacketextension-can-not-be-served-on-packet-mucuser.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Can not create a multi-user discussion room (MUC) with a support library for Android: & ldquo; Packet.DefaultPacketExtension can not be served on packet.MUCUser & rdquo; Can not create a multi-user discussion room (MUC) with a support library for Android: & ldquo; Packet.DefaultPacketExtension can not be served on packet.MUCUser & rdquo;
advertisements

For an application I need to be able to create a multi user chatroom and join it. The chat server is a openfire server.

I used to have:

MultiUserChat chat = new MultiUserChat(connection, roomName + "@conference.localhost");
chat.join(nickname);

When the room doesn't exist it creates the room and joins. however the next user can't join. He get's a 404, recipient unavailable(404). Which suggests the chatroom is locked or something.

Then I found code in the documentation and I tried the following:

chat.create(nickname);

// Send an empty room configuration form which indicates that we want
// an instant room
chat.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));

However when I try to execute this it says it crashes with the following error in the logcat:

03-02 12:04:12.890: E/AndroidRuntime(20872): FATAL EXCEPTION:

 AsyncTask #3 03-02 12:04:12.890: E/AndroidRuntime(20872):

 java.lang.RuntimeException: An error occured while executing
 doInBackground()
03-02 12:04:12.890: E/AndroidRuntime(20872): Caused
 by: java.lang.ClassCastException:

 org.jivesoftware.smack.packet.DefaultPacketExtension cannot be cast to
 org.jivesoftware.smackx.packet.MUCUser 03-02 12:04:12.890:
 E/AndroidRuntime(20872):   at
 org.jivesoftware.smackx.muc.MultiUserChat.getMUCUserExtension(MultiUserChat.java:2002)
 03-02 12:04:12.890: E/AndroidRuntime(20872):   at
 org.jivesoftware.smackx.muc.MultiUserChat.create(MultiUserChat.java:364)
 03-02 12:04:12.890: E/AndroidRuntime(20872):   at
 be.xios.crs.pivi.managers.XmppManager.createOrJoinChatGroup(XmppManager.java:116)

Hope someone can help me with this and give some advise.


Edit 04/2015: Calling SmackAndroid.init(Context) is no longer required with Smack 4.1 (or higher). In fact SmackAndroid does no longer exist.

org.jivesoftware.smack.packet.DefaultPacketExtension cannot be cast to org.jivesoftware.smackx.packet.MUCUser is usually an indicator that you didn't initialized the static code of aSmack that takes care of registering the Smack providers for the various packet (and packet extension) classes of Smack.

For most aSmack versions, simply calling

SmackAndroid.init(Context ctx)

will do the trick.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK