2016-08-01 31 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(); 
     } 
    } 

例外,我得到了

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

有兩種情況: 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); 

講究名稱:

域名它的服務會議名稱+服務器域名。 一個擁有者可以是一個JID(foo @ myserver)並且與服務無關(因此[email protected]即使服務器接受它,它也不是一個有效的用戶)。

與修復你的老闆:

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

謝謝你了,它的工作現在:) – MathaN

+0

我還有一個疑問,我無法創建新用戶,它說「禁權威性」在服務器的配置我提供的註冊允許所有。但它不起作用。你能告訴我爲什麼我得到這個錯誤嗎? @MrPk – MathaN

+0

很難在評論中回覆,請打開另一個問題,並確保描述用例(客戶端,案例和方法)。如果您遇到Spark問題,可能是您錯過了服務器名稱,如果您有Java代碼問題,我必須檢查 – MrPk