2016-08-05 3 views
2

ich ein Android-App bin zu schaffen und haben eine Aktivität wie folgt definiert:Android Textview machen http und benutzerdefinierte Schema urls klickbare

<activity 
    android:name="com.scheme.app.MainActivity" 
    android:screenOrientation="portrait" 
    android:theme="@style/MainActivityTheme"> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <data 
      android:host="invite" 
      android:scheme="schemeapp" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
    </intent-filter> 
</activity> 

Wenn schlagen die URL "schemeapp: // laden" die Benutzer wird zu MainActivity gebracht.

Ich habe eine Textview mit folgendem Inhalt:

textView.setText("Testing custom scheme - schemeapp://invite with http http://www.LMNGTFY.com"); 

Ich brauche die Web-URL (http://www.LMNGTFY.com) sowie die benutzerdefinierte URL zu machen (schemeapp: // laden) anklickbar.

Was habe ich schon versucht:

String text = "Testing custom scheme - schemeapp://invite with http http://www.LMNGTFY.com"; 
textView.setText(text); 
Linkify.addLinks(textView, Linkify.WEB_URLS | Linkify.PHONE_NUMBERS | Linkify.EMAIL_ADDRESSES | Linkify.ALL); 
Pattern urlDetect = Pattern.compile("(schemeapp):\\/\\/([a-zA-Z0-9.]+)"); 
Matcher matcher = urlDetect.matcher(text); 
String scheme = null; 

while (matcher.find()) { 
    String customSchemedUrl = matcher.group(0); 
    Uri uri = Uri.parse(customSchemedUrl); 
    scheme = uri.getScheme(); 
    break; 
} 

if (!TextUtils.isEmpty(scheme)) { 
    Linkify.addLinks(textView, urlDetect, scheme); 
} 

Wenn ich die folgende Codezeile entfernen Web-URLs zu erkennen, das benutzerdefinierte Schema url funktioniert:

Linkify.addLinks(textView, Linkify.WEB_URLS | Linkify.PHONE_NUMBERS | Linkify.EMAIL_ADDRESSES | Linkify.ALL); 

Wenn ich versuche, Fügen Sie http als benutzerdefinierte Schema-URL hinzu, die http-URLs sind nicht anklickbar.

EDIT: Klarstellung

Ich kann nicht HTML verwenden, da wird eine Benutzereingabe auch auf der Textview angezeigt werden und müssen verknüpft werden.

Können Sie bitte helfen. Dank

Antwort

1

Dies ist eine Option:

final Spanned html = Html.fromHtml("Testing custom scheme - <a href='schemeapp://invite'>schemeapp://invite</a> with http http://www.LMNGTFY.com";); 

helpText.setText(html); 
helpText.setMovementMethod(new LinkMovementMethod()); 
+0

Dank, dass das funktionieren würde, aber ich kann nicht html setzt, wird die Textview auch von den Nutzern zeigt Eingang, so dass sie keine HTML-Tags werden. – manishKungwani

+0

können Sie den Text vor dann wie userinput.replace ("schemeapp: //.* ..", " ligi

+0

testing das gleiche auf unserer iPhone App vorverarbeiten, da der Inhalt Cross-Plattform ist. – manishKungwani

Verwandte Themen