2016-12-22 5 views
0

Ich suchte nach verschiedenen Möglichkeiten, Offline-Messaging in meiner Anwendung zu unterstützen, aber jedes dieser Beispiele enthalten parseBareAdress und Android Studio gibt Fehler, die besagt, dass es parseBareAdress nicht auflösen kann. Es kann alles andere auflösen. Hier ist mein CodeAndroid smack.util.StringUtil hat keine 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(); 
     } 
    } 

hier meine Abhängigkeiten sind

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

Ich habe für die gleiche Antwort suchen. –

+0

Das ist ein Problem, aber Sie können die Adresse mit der Hand teilen. Ich habe ein größeres Problem, ich kann die Offline-Nachrichten nicht bekommen, oder? – Prethia

+0

Ja, ich kann. Ping mich auf individuelle Konversation, wenn Sie eine bestimmte Frage haben, könnte ich helfen können. –

Antwort

0

Ersetzen StringUtils.parseBareAddress(fullJid) mit dieser kundenspezifischen Methode:

/** 
* 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 
}