У меня есть TextView, который отображает базовый HTML, содержащий 2+ ссылки. Мне нужно фиксировать клики по ссылкам и открывать ссылки - в моем собственном внутреннем WebView (не в браузере по умолчанию).
Наиболее распространенный метод обработки ссылок выглядит следующим образом:
String str_links = "<a href='http://google.com'>Google</a><br /><a href='http://facebook.com'>Facebook</a>";
text_view.setLinksClickable(true);
text_view.setMovementMethod(LinkMovementMethod.getInstance());
text_view.setText( Html.fromHtml( str_links ) );
Однако в результате ссылки открываются во внутреннем веб-браузере по умолчанию (отображается диалоговое окно «Завершить действие с помощью ...»).
Я попытался реализовать onClickListener, который правильно срабатывает при нажатии ссылки, но я не знаю, как определить, КАКАЯ ссылка была нажата ...
text_view.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// what now...?
}
});
В качестве альтернативы я попытался создать собственный класс LinkMovementMethod и реализовать onTouchEvent ...
public boolean onTouchEvent(TextView widget, Spannable text, MotionEvent event) {
String url = text.toString();
// this doesn't work because the text is not necessarily a URL, or even a single link...
// eg, I don't know how to extract the clicked link from the greater paragraph of text
return false;
}
Идеи?
Пример решения
Я придумал решение, которое анализирует ссылки из строки HTML и делает их интерактивными, а затем позволяет вам отвечать на URL-адрес.
span.getURL()
».) Вы даже можете опубликовать его как ответ, так как он лучше, чем принятый в настоящее время ответ!