2016-12-22 2 views
0

Я искал различные способы поддержки офлайн-обмена сообщениями в своем приложении, но каждый из этих примеров включает в себя parseBareAdress и студию Android дает ошибку, заявляя, что она не может решить parseBareAdress. Он может решить все остальное. Вот мой кодAndroid smack.util.StringUtil не имеет parseBareAddress

import org.jivesoftware.smack.util.StringUtils; 

public static void handleOfflineMessages(XMPPConnection connection, Context ctx)throws Exception { 
     OfflineMessageManager offlineMessageManager = new OfflineMessageManager(connection); 

     if (!offlineMessageManager.supportsFlexibleRetrieval()) { 
      Log.d(TAG,"Offline messages not supported"); 
      return; 
     } 

     if (offlineMessageManager.getMessageCount() == 0) { 
      Log.d(TAG,"No offline messages found on server"); 
     } else { 
      List<Message> msgs = offlineMessageManager.getMessages(); 
      for (Message msg : msgs) { 
       String fullJid = msg.getFrom(); 
       String bareJid = StringUtils.parseBareAddress(fullJid); 
       String messageBody = msg.getBody(); 
       if (messageBody != null) { 
        Log.d(TAG,"Retrieved offline message from " +messageBody); 
       } 
      } 
      offlineMessageManager.deleteMessages(); 
     } 
    } 

Вот мои зависимости

compile 'org.igniterealtime.smack:smack-android-extensions:4.1.0-alpha6' 
    compile 'org.igniterealtime.smack:smack-tcp:4.1.0-alpha6' 
+0

Я искал тот же ответ. –

+0

Это проблема, но вы можете разделить адрес рукой. У меня большая проблема, я не могу получить сообщения в автономном режиме? – Prethia

+0

Да, я могу. Пинг меня в индивидуальном разговоре, если у вас есть какой-то конкретный запрос, я мог бы помочь. –

ответ

0

Заменить StringUtils.parseBareAddress(fullJid) этот пользовательский метод:

/** 
* Input: [email protected]/Smack || [email protected]<br> 
* user<br> 
* @param jid 
* @return bareAddress 
*/ 
public static String parseBareAddress(String jid) 
{ 
    Pattern regex = Pattern.compile("(.+)(@.+)"); 


     Matcher matcher = regex.matcher(jid); 
     if (matcher.matches()) 
     { 
      return matcher.group(1); 
     } 

     return jid; //safe condition 
} 
Смежные вопросы