Tengo un TextView que está renderizando HTML básico, que contiene más de 2 enlaces. Necesito capturar los clics en los enlaces y abrir los enlaces, en mi propio WebView interno (no en el navegador predeterminado).
El método más común para manejar la representación de enlaces parece ser el siguiente:
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 ) );
Sin embargo, esto hace que los enlaces se abran en el navegador web interno predeterminado (que muestra el cuadro de diálogo "Completar acción con ...").
Intenté implementar un onClickListener, que se activa correctamente cuando se hace clic en el enlace, pero no sé cómo determinar EN QUÉ enlace se hizo clic ...
text_view.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// what now...?
}
});
Alternativamente, intenté crear una clase LinkMovementMethod personalizada e implementar 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;
}
Ideas?
Solución de ejemplo
Se me ocurrió una solución que analiza los enlaces de una cadena HTML y hace que se pueda hacer clic en ellos, y luego te permite responder a la URL.
span.getURL()
".) ¡Incluso podría publicarlo como una respuesta, ya que es mejor que la respuesta aceptada actualmente!