Eu tenho um TextView que está renderizando HTML básico, contendo 2+ links. Preciso capturar cliques nos links e abri-los - em meu próprio WebView interno (não no navegador padrão).
O método mais comum para lidar com a renderização de links parece ser assim:
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 ) );
No entanto, isso faz com que os links sejam abertos no navegador da web interno padrão (mostrando a caixa de diálogo "Concluir ação usando ...").
Tentei implementar um onClickListener, que é acionado corretamente quando o link é clicado, mas não sei como determinar QUAL link foi clicado ...
text_view.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// what now...?
}
});
Como alternativa, tentei criar uma classe 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;
}
Ideias?
Solução de exemplo
Eu vim com uma solução que analisa os links de uma string HTML e os torna clicáveis, e então permite que você responda ao URL.
span.getURL()
".) Você pode até postar como uma resposta, pois é melhor do que a resposta aceita atualmente!