Android 可以在两个模拟器上测试聊天应用程序吗?

Android 可以在两个模拟器上测试聊天应用程序吗?,android,Android,我已经使用asmack lib和openfire创建了一个简单的聊天应用程序,但是当我在emulator上测试它时,我总是得到状态不可用,在我的openfire服务器上有相同的用户可用 我已经测试了talk.google.com服务器的代码,它可以无缝工作,但是当我使用open fire进行测试时,我总是得到不可用状态。我尝试过各种方法,比如在openfire设置中将订阅选项设置为“两者” 我编写了以下设置状态的代码: Presence presence = new Presence(Pres

我已经使用asmack lib和openfire创建了一个简单的聊天应用程序,但是当我在emulator上测试它时,我总是得到状态不可用,在我的openfire服务器上有相同的用户可用

我已经测试了talk.google.com服务器的代码,它可以无缝工作,但是当我使用open fire进行测试时,我总是得到不可用状态。我尝试过各种方法,比如在openfire设置中将订阅选项设置为“两者”

我编写了以下设置状态的代码:

Presence presence  = new Presence(Presence.Type.available);  
presence.setStatus("Online, Programmatically!");
presence.setPriority(24);
presence.setMode(Presence.Mode.available);
connection.sendPacket(presence);
      try {
           Thread.sleep(10000);
      } catch (InterruptedException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
      } 
但是,当我运行以下代码时,我总是得到状态不可用:

Roster roster = connection.getRoster();
Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.accept_all);
roster.addRosterListener(new RosterListener() {
// Ignored events public void entriesAdded(Collection<String> addresses) {}
public void entriesDeleted(Collection<String> addresses) {}
public void entriesUpdated(Collection<String> addresses) {}
public void presenceChanged(Presence presence) {
System.out.println("Presence changed: " + presence.getFrom() + " " + presence);
}  
@Override
public void entriesAdded(Collection<String> arg0) {
// TODO Auto-generated method stub}
});
    try { Thread.sleep(5000); } 
    catch (InterruptedException e) { }
Collection<RosterEntry> entries = roster.getEntries();              
for (RosterEntry entry : entries) {                         
    Presence subscribed = new Presence(Presence.Type.subscribed); 
    subscribed.setTo(entry.getUser()); 
    connection.sendPacket(subscribed);
    Log.d("JWP", "RosterEntry " + entry);
    Log.d("JWP", "User: " + entry.getUser());
    Log.d("JWP", "Name: " + entry.getName());
    Log.d("JWP", "Status: " + entry.getStatus());
    Log.d("JWP", "Type: " + entry.getType());                 
    Presence entryPresence = roster.getPresence(entry.getUser());
    Log.d("JWP", "Presence Status: "+ entryPresence.getMode());
    Log.d("JWP", "Presence Type: " + entryPresence.getType());
    Presence.Type type = entryPresence.getType();
    if (type == Presence.Type.available){
    Log.d("JWP", "Presence AVIALABLE");
    Log.d("JWP", "Presence : " + entryPresence);
    }
}
花名册=connection.get花名册();
花名册.setDefaultSubscriptionMode(花名册.SubscriptionMode.accept_all);
花名册.addRosterListener(新花名册Listener(){
//已忽略事件已添加公共void entriesAdded(集合地址){}
已删除公共无效项(集合地址){}
公共无效项已更新(集合地址){}
公共无效状态已更改(状态){
System.out.println(“状态更改:“+Presence.getFrom()+”+Presence”);
}  
@凌驾
已添加公共无效项(集合arg0){
//TODO自动生成的方法存根}
});
试试{Thread.sleep(5000);}
捕获(中断异常e){}
集合条目=花名册.getEntries();
对于(名册条目:条目){
订阅状态=新状态(Presence.Type.subscribed);
subscribed.setTo(entry.getUser());
连接发送包(已订阅);
Log.d(“JWP”、“RosterEntry”+条目);
Log.d(“JWP”,“User:+entry.getUser());
Log.d(“JWP”,“Name:”+entry.getName());
Log.d(“JWP”,“Status:+entry.getStatus());
Log.d(“JWP”,“Type:+entry.getType());
Presence entryPresence=花名册.getPresence(entry.getUser());
Log.d(“JWP”,“状态:”+entryPresence.getMode());
Log.d(“JWP”,“状态类型:”+entryPresence.getType());
Presence.Type=entryPresence.getType();
if(type==Presence.type.available){
Log.d(“JWP”,“可在场”);
日志d(“JWP”,“存在:”+入口存在);
}
}
为什么会发生这种情况?我尝试过不同的方法,但没有找到确切的解决办法