Ho un TextView che esegue il rendering di HTML di base, contenente 2+ collegamenti. Devo acquisire i clic sui collegamenti e aprire i collegamenti - nella mia WebView interna (non nel browser predefinito).
Il metodo più comune per gestire il rendering dei link sembra essere questo:
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 ) );
Tuttavia, questo fa sì che i collegamenti si aprano nel browser web interno predefinito (che mostra la finestra di dialogo "Completa azione usando ...").
Ho provato a implementare un onClickListener, che viene attivato correttamente quando si fa clic sul collegamento, ma non so come determinare QUALE collegamento è stato cliccato ...
text_view.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// what now...?
}
});
In alternativa, ho provato a creare una classe LinkMovementMethod personalizzata e ad implementare 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;
}
Idee?
Soluzione di esempio
Ho trovato una soluzione che analizza i collegamenti da una stringa HTML e li rende cliccabili, quindi ti consente di rispondere all'URL.
span.getURL()
".) Potresti anche pubblicarlo come risposta, poiché è migliore della risposta attualmente accettata!