android - 使用 aSmack 库的 XMPP 出现错误?

标签 android client xmpp

我正在尝试让 aSmack 在我的项目中工作。在eclipse中创建了一个标准项目,将jar(smack.jar、smackx-debug.jar、smackx-jingle.jar、smackx.jar)添加到libs文件夹中。开始使用 XMPP 类,但我不确定是否应该做其他事情来正确设置项目(稍后),因为它不起作用。当我运行应用程序时,当我尝试发送消息时,出现此错误无法找到类'java.beans.PropertyDescriptor',从方法org.jivesoftware.smack.util.PacketParserUtils.parseWithIntrospection引用我收到此错误java.lang.IllegalStateException:未连接到服务器。在org.jivesoftware.smack.XMPPConnection.sendPacket(XMPPConnection.java:445)

这是我正在使用的代码

public  class ClientJabberActivity extends Activity {

   private  final  static String server_host =  "aaaaa.com" ;
   private  final  static  int SERVER_PORT =  5222 ;
   private  final  static String SERVICE_NAME =  "gmail.com" ;  
   private  final  static String LOGIN =  "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="651d1d1d1d250b0408004b060a08" rel="noreferrer noopener nofollow">[email protected]</a>" ;
   private  final  static String PASSWORD =  "yyyy";

   ArrayList<String> m_discussionThread;
   ArrayAdapter<String> m_discussionThreadAdapter;
   XMPPConnection m_connection;
   private Handler m_handler;   

   @ Override 
   public  void  onCreate (Bundle savedInstanceState) { 
   super . onCreate (savedInstanceState);
   setContentView (R.layout.main);
   m_handler =  new  Handler ();
     try  { 
        initConnection ();
     }  catch (XMPPException e) { 
        e. printStackTrace ();
     }

    final EditText recipient = (EditText) this . findViewById (R.id.recipient);
    final EditText message = (EditText) this . findViewById (R.id.message);     
    ListView list = (ListView) this . findViewById (R.id.thread);

    m_discussionThread =  new ArrayList<String>();
    m_discussionThreadAdapter =  new ArrayAdapter<String>  ( this ,
            R.layout.multi_line_list_item,  m_discussionThread);
    list.setAdapter(m_discussionThreadAdapter);

    Button send = (Button) this . findViewById (R.id.send);
    send. setOnClickListener ( new View. OnClickListener () { 
        public  void  onClick (View view) {                 

            String to = recipient.getText().toString ();
            String text = message.getText().toString ();

            Message msg =  new  Message(to, Message.Type.chat);
            msg.setBody(text);
            m_connection.sendPacket (msg);
            m_discussionThread. add ( " Me  : " );
            m_discussionThread. add (text);
            m_discussionThreadAdapter. notifyDataSetChanged ();
         } 
    } );
 }

private  void  initConnection () throws XMPPException { 

    ConnectionConfiguration config = new  ConnectionConfiguration (server_host, SERVER_PORT, SERVICE_NAME);
    m_connection =  new  XMPPConnection (config);
    m_connection.connect ();
    m_connection.login(LOGIN, PASSWORD);
    Presence presence =  new  Presence(Presence.Type.available);
    Log.i("ID", ""+presence);
    m_connection.sendPacket (presence);       

    PacketFilter filter =  new  MessageTypeFilter(Message.Type.chat);

    m_connection.addPacketListener(new PacketListener() {
        public void processPacket(Packet packet) {
            Message message = (Message) packet;
                if (message.getBody() != null) {
                String fromName = StringUtils.parseBareAddress(message.getFrom());
                m_discussionThread.add(fromName + ":");
                m_discussionThread.add(message.getBody());

                m_handler.post(new Runnable() {
                public void run() {
                m_discussionThreadAdapter.notifyDataSetChanged();
                }
                });
            }
        }
    }, filter);

ChatManager chatmanager = m_connection.getChatManager();
  chatmanager.addChatListener(new ChatManagerListener()
  {
    public void chatCreated(final Chat chat, final boolean createdLocally)
    {
      chat.addMessageListener(new MessageListener()
      {
        public void processMessage(Chat chat, Message message)
        {
          System.out.println("Received message: " 
            + (message != null ? message.getBody() : "NULL"));
          Log.i("CHAT USER", "Received message is: "+message.getBody());
        }
      });
    }
  });
}
}

任何人都在 XMPP 客户端中遇到过此问题。这是 jar 文件中的问题还是我必须更改代码中的任何内容...

最佳答案

您确定您使用的是 asmack jar 而不是 smack jar 吗?因为如果您使用普通的 smack,这个错误看起来就会出现。

关于android - 使用 aSmack 库的 XMPP 出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11014462/

相关文章:

android - 如何在fragment中使用findViewById,无法应用ArrayList - Android

java - Android 中 Viewpager 中的圆形指示器

tcp - 大容量TCP Client的设计

c++ - Android 中的 RTSP 客户端

c# - SSL 客户端/服务器相互认证

swift - 无法连接到 Ejabberd 服务器

android - SASLError 使用 PLAIN : not-authorized

android - 折叠工具栏布局第一次没有展开,pin 不起作用

ios - 如何在 iOS 应用程序中将 xmpp 与 Openfire 服务器集成?

java - 使用JodaTime将UTC转换为以毫秒为单位的本地时间