Не удалось получить информацию о комнате xmpp muc в Android

Я использую библиотеку asmack для своего приложения чата. Я использую описанный ниже код после успешного входа в систему для получения информации о комнате Muc:

MultiUserChat mMultiUserChat = new MultiUserChat(connection,"[email protected]");
mMultiUserChat.join(USERNAME);
try {     
  if (mMultiUserChat.isJoined()==true) {                                  
  RoomInfo roomInfo=mMultiUserChat.getRoomInfo(connection,"[email protected]");}

                          } catch (Exception e) {
                              // TODO: handle exception

                              e.printStackTrace();
                          }

Я получаю эту ошибку при получении информации о комнате, пока я отлаживаю и проверяю, я получаю информацию о комнате в журнале, но ничего не появляется в roomInfo.

10-10 08:55:12.388: W/System.err(1821): java.lang.ClassCastException: org.jivesoftware.smack.util.PacketParserUtils$2 нельзя преобразовать в org.jivesoftware.smackx.packet.DiscoverInfo 10-10 08:55:12.428: W/System.err(1821): в org.jivesoftware.smackx.ServiceDiscoveryManager.discoverInfo(ServiceDiscoveryManager.java:600) 10-10 08:55:12.458: W/System.err(1821): в org.jivesoftware.smackx.ServiceDiscoveryManager.discoverInfo(ServiceDiscoveryManager.java:552) 10-10 08:55:12.478: W/System.err(1821): в com.demo.xmppchat.CopyOfXMPPChatDemoActivity.getRoomInfo(CopyOfXMPPChatDemoActivity.java: 469)

Информация о моем чате, которую я получил в журнале

10-10 15:38:10.133: D/SMACK(26035): 03:38:10 PM RCV  (1107887640): <iq 
from='[email protected]' to='14393671556301070000@chat/Smack' 
id='VWaeO-6' type='result'><query xmlns='http://jabber.org/protocol/disco#info'><identity 
category='conference' type='text' name='VjNewMoiosandroid'/><feature var='
http://jabber.org/protocol/muc'/><feature var='muc_public'/><feature 
var='muc_persistent'/><feature var='muc_open'/><feature var='muc_semianonymous'/><feature 
var='muc_moderated'/><feature var='muc_unsecured'/><x xmlns='jabber:x:data' 
type='result'><field type='hidden' var='FORM_TYPE'><value>
http://jabber.org/protocol/muc#roominfo</value></field><field label='Room description' 
var='muc#roominfo_description'><value></value></field><field label='Number of occupants' 
var='muc#roominfo_occupants'><value>1</value></field></x></query></iq>

person Raj    schedule 10.10.2014    source источник


Ответы (2)


Я использовал старую банку asmack, которая является моей проблемой, я внес некоторые изменения, я использовал метод getRoomInfo() класса MultiUserChat непосредственно в моем классе.

MultiUserChat mMultiUserChat = new MultiUserChat(connection,"[email protected]");
mMultiUserChat.join(USERNAME);
try {     
  if (mMultiUserChat.isJoined()==true) {                                  
  String roomInfo=getRoomInfo(connection, "[email protected]");}

                          } catch (Exception e) {
                              // TODO: handle exception

                              e.printStackTrace();
                          }

Я сделал один метод, как показано ниже

public static String getRoomInfo(Connection connection, String room)
              throws XMPPException {
       String roomInfo="";
       try {
            ServiceDiscoveryManager serviceDiscoveryManager=new ServiceDiscoveryManager(connection);
            DiscoverInfo info = serviceDiscoveryManager.discoverInfo(room);
            roomInfo=info.toXML();

      } catch (XMPPException e) {
          // TODO: handle exception
          Log.e("xmpp", e.toString());

      }

          return  roomInfo;
      }
person Raj    schedule 10.10.2014

Сделай так

Замените эту строку

RoomInfo roomInfo=mMultiUserChat.getRoomInfo(connection,"[email protected]");

С этим

RoomInfo roomInfo=MultiUserChat.getRoomInfo(connection,"[email protected]");
person Biraj Zalavadia    schedule 10.10.2014
comment
Здравствуйте, Бирадж, спасибо за ответ, я сделал, как вы сказали, но получил ту же ошибку. - person Raj; 10.10.2014