2014-10-24 2 views
0

Я создаю приложение чата с открытым сервером огня и asmack в android. Я подключаюсь к открытому серверу огня с 2 пользователями (позволяет A & B) от эмулятора и еще 1 пользователь (L), искра.Значение присутствия пользователя не возвращается null asmack

Кроме того, я добавил слушателя списка для любых изменений в значении присутствия пользователя.

Итак, когда приложение прослушивает обновления реестра, значение presence.getstatus для пользователей из эмулятора (т. Е. Из asmack api) приходит как null. Но я получаю статус для пользователей, которые искры.

Ниже приведен код для изменений присутствия.

public void presenceChanged(Presence presence) { 


      String Name="",Status=""; 
      Log.d(TAG, "Presence value = "+presence); 
      Log.d(TAG, "Presence getfrom value = "+presence.getFrom()); 
      Log.d(TAG, "Presence getstatus value = "+presence.getStatus()); 
      Log.d(TAG, "Presence getto value = "+presence.getTo()); 

Ниже приведен журнал для пользователя из искры.

Presence value = available (Online) 
Presence getfrom value = [email protected]/Spark 2.6.3 
Presence getstatus value = Online 
Presence getto value = [email protected] 

и ниже - это журнал для пользователя из asmack android.

Presence value = available 
Presence getfrom value = [email protected]/Smack 
Presence getstatus value = null 
Presence getto value = [email protected] 

поэтому проблема заключается в том, почему для asmack user присутствует свойство presence.getStatus() как null.

Presence getstatus value = null 

Может кто-то пожалуйста, скажите, что еще мне нужно сделать, чтобы получить значение presence.getStatus() для пользователей asmack.

+0

Какая версия aSmack? Попробуйте включить SmackConfiguration.DEBUG и посмотреть, содержит ли статус-позиция, полученная Smack, статус. – Flow

+0

Я использую этот asmack-android-4.jar. Теперь я могу получить статус из asmack, установив присутствие, как только будет установлено соединение с openfire. Действительно ли это необходимо? – kavuru

+0

У меня нет asmack-android-4.jar, вы уверены, что в имени баннера нет версии с малой версией и версией патча? – Flow

ответ

0

Получить доступ к этой функции Присутствие mPresence = YourXmppConnection .getRoster(). GetPresence (Userjid); mPresence.getType() дает доступность пользователю. Проверьте его против Presence.Type.available

0
new AsyncTask<Object,Object,Object>(){ 

    @Override 
    protected Object doInBackground(Object[] params) { 
     Presence availability1=roster.getPresence("[email protected]"); 
     return availability1; 
    } 

    @Override 
    protected void onPostExecute(Object object) { 
     super.onPostExecute(object); 
     Presence data=(Presence)object; 
     Log.d("Presence-----","Presence========>>"+data.getStatus()); 
     sendBroadCast(""+data.getStatus()); 
    } 
}.execute();