2016-08-01 3 views
0

Я разрабатываю приложение для чата для одного чата и группового чата.Получение MucConfigurationNotSupportedException В android smack 4.2.0-beta1

Я успешно сделал один-один чат.

Используя приведенную ниже ссылку, я создал групповой чат.

Link to create Group chat in smack 4.2.0-beta1

я могу увидеть группу в панели администратора, но Существует только один пользователь доступен, но я создал эту группу с тремя членами. Здесь я добавил свой код.

public void createGroupChat() { 

     String DomainName = "conference."+ServiceAddress; 
     // Create a MultiUserChat using a Connection for a room 
// Get the MultiUserChatManager 
     MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection); 
     try { 
      EntityBareJid jid = JidCreate.entityBareFrom("mychatroom3" + "@" 
        + DomainName); 

// Create a MultiUserChat using an XMPPConnection for a room 
      MultiUserChat muc = manager.getMultiUserChat(jid); 

// Prepare a list of owners of the new room 
      Set<Jid> owners = JidUtil.jidSetFrom(new String[]{"admin" + "@" 
        + DomainName, "dev1" + "@" 
        + DomainName, "dev2" + "@" 
        + DomainName}); 

// Create the room 
      Resourcepart nickname = Resourcepart.from("admin"); 
      muc.create(nickname).getConfigFormManager().setRoomOwners(owners).submitConfigurationForm(); 
      muc.join(nickname); 
      Log.e("Group chat", "Created"); 
      Toast.makeText(context, 
        "Group chat" + "Created", 
        Toast.LENGTH_SHORT).show(); 
     } catch (XmppStringprepException e) { 
      e.printStackTrace(); 
     } catch (MultiUserChatException.MucAlreadyJoinedException e) { 
      e.printStackTrace(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } catch (XMPPException.XMPPErrorException e) { 
      e.printStackTrace(); 
     } catch (MultiUserChatException.MissingMucCreationAcknowledgeException e) { 
      e.printStackTrace(); 
     } catch (NotConnectedException e) { 
      e.printStackTrace(); 
     } catch (SmackException.NoResponseException e) { 
      e.printStackTrace(); 
     } catch (MultiUserChatException.NotAMucServiceException e) { 
      e.printStackTrace(); 
     } catch (MultiUserChatException.MucConfigurationNotSupportedException e) { 
      e.printStackTrace(); 
     } 
    } 

Exception, что я получил

08-01 05:58:14.589 917-917/com.agarangroup.hello W/System.err: org.jivesoftware.smackx.muc.MultiUserChatException$MucConfigurationNotSupportedException: The MUC configuration 'muc#roomconfig_roomowners' is not supported by the MUC service 
08-01 05:58:14.590 917-917/com.agarangroup.hello W/System.err:  at org.jivesoftware.smackx.muc.MucConfigFormManager.setRoomOwners(MucConfigFormManager.java:137) 
08-01 05:58:14.590 917-917/com.agarangroup.hello W/System.err:  at com.agarangroup.hello.Services.MyXMPP.createGroupChat(MyXMPP.java:331) 
08-01 05:58:14.590 917-917/com.agarangroup.hello W/System.err:  at com.agarangroup.hello.slidingtab.chats.GroupChatActivity.onCreate(GroupChatActivity.java:99) 

ответ

1

Есть 2 случая: 1) Ваша служба конференции не поддерживает владельцев (зависит от сервера, Ejabber в вашем случае, и это не звучит нормально)

2) Ваша форма конфигурации не заполнена, так как documentation говорит, и вам нужно создать полную форму.

Как исправить: заменить эту строку:

muc.create(nickname).getConfigFormManager().setRoomOwners(owners).submitConfigurationForm(); 

с:

muc.create(nickname); 
Form form = muc.getConfigurationForm().createAnswerForm(); 
form.setAnswer("muc#roomconfig_roomowners", owners); 
muc.sendConfigurationForm(form); 

обратить внимание на имена:

ваш DomainName это имя службы конференции + сервера Доменное имя. Владелец может быть JID (foo @ myserver) и не связан с сервисом (так [email protected] это недействительный пользователь, даже если сервер его примет).

Исправьте владелец:

"admin" + "@" + ServiceAddress, "dev1" + "@" + ServiceAddress, "dev2" + "@" + ServiceAddress 
+0

Спасибо много, теперь он работает :) – MathaN

+0

У меня есть еще сомневаются, я не могу создать новый пользователь он говорит «Запрещенный AUTH» В конфигурации сервера я при условии регистрация позволит всем. Но это не сработает. Можете ли вы сказать мне, почему я получаю эту ошибку? @MrPk – MathaN

+0

трудно ответить в комментарии, откройте еще один вопрос и не забудьте описать прецедент (клиент, случай и метод). Если у вас есть проблемы с Spark, возможно, вы пропустите имя сервера, если у вас возникли проблемы с кодом Java, я должен проверить – MrPk