2016-03-31 4 views
1

Ich habe ein Textview mit Autolink-Set alsAndroid: Android: Autolink = „web“ nicht Abfrageparameter nach Domänen

<TextView 
    android:id="@+id/messageDetail_privateText_txt" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:autoLink="web|phone|email" /> 

Aber unterstützen, wenn ich einen Text mit einer URL wie http://www.test.com?p1=v1&p2=v2 den Autolink des Textview gesetzt doesn‘ t die Abfrageparameter nach der Domäne erkennen.

Ich kann verstehen, dass diese Art von URLs nicht zu viel Sinn hat, gibt es jedoch eine Problemumgehung für dieses Problem?

iOS erkennt die Parameter gut.

+0

"yourtextview.setMovementMethod (LinkMovementMethod.getInstance());" füge diesen Code hinzu .. –

Antwort

0

Als Antwort auf meine eigene Frage, was für mich schließlich funktionierte, war es, die URLs der Zeichenfolge zu überprüfen und den Schrägstrich manuell hinzuzufügen. Nicht die coolste Lösung der Welt, aber in diesem Fall funktioniert.

Unter dem Code:

protected String normalizeURLs(String html) 
{ 

    String[] pieces = html.split(" "); 
    ArrayList<String> textParts = new ArrayList<>(); 

    for(String piece : pieces) { 

     try { 
      URL isURL = new URL(piece); 
      String protocol = isURL.getProtocol(); 
      String host = isURL.getHost(); 
      String query = isURL.getQuery(); 
      String path = isURL.getPath(); 
      String questionMark = "?"; 

      if (path.equals("")) { 
       path = "/"; 
      } 

      if (query == null) { 
       query = ""; 
       questionMark = ""; 
      } 

      String url = protocol + "://" + host + path + questionMark + query; 
      textParts.add(url); 
     } catch (MalformedURLException exception) { 
      textParts.add(piece); 
     } 
    } 

    String resultString = ""; 

    for (String s : textParts) 
    { 
     resultString += s + " "; 
    } 

    return resultString; 
}