2016-08-05 9 views
2

Я создаю андроид приложение и определил активность следующим образом:Android TextView сделать HTTP и пользовательские схемы URLS интерактивные

<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> 

При попадании в URL "schemeapp: // пригласить" в пользователь будет отправлен в MainActivity.

У меня есть TextView со следующим содержанием:

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

Мне нужно сделать веб-адрес (http://www.LMNGTFY.com), а также пользовательский URL (schemeapp: // инвайт) интерактивными.

То, что я уже пробовал:

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); 
} 

Если удалить следующую строку кода для обнаружения веб-адреса, пользовательские схемы URL работы:

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

Если я пытаюсь добавьте http в качестве настраиваемого URL-адреса схемы, URL-адреса URL не будут доступны.

EDIT: Разъяснение

Я не могу использовать HTML, так как данные, вводимые пользователем, также будет отображаться на TextView и должно быть связаны между собой.

Не могли бы вы помочь. Благодаря

ответ

1

Это один вариант:

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

спасибо, что будет работать, но я не могу поставить HTML, то TextView также покажет вход со стороны пользователей, так что они не будут использовать HTML-теги. – manishKungwani

+0

вы можете предварительно обработать текст до этого, например userinput.replace ("schemapp: //.* ..", " ligi

+0

тестировать то же самое на нашем приложении для iPhone, поскольку контент является кросс-платформенным .. – manishKungwani