Linkify es una gran clase, que busca patrones complejos como URL, números de teléfono, etc. y los convierte en URLSpans. En lugar de volver a escribir las expresiones regulares existentes, amplié la clase URLSpan y creé un método para actualizar solo el URLSpans del teléfono a una URLSpan personalizada con un cuadro de diálogo de confirmación.
Primera mi clase URLSpan extendida, ConfirmSpan:
class ConfirmSpan extends URLSpan {
AlertDialog dialog;
View mView;
public ConfirmSpan(URLSpan span) {
super(span.getURL());
}
@Override
public void onClick(View widget) {
mView = widget;
if(dialog == null) {
AlertDialog.Builder mBuilder = new AlertDialog.Builder(widget.getContext());
mBuilder.setMessage("Do you want to call: " + getURL().substring(4) + "?");
mBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
openURL();
}
});
dialog = mBuilder.create();
}
dialog.show();
}
public void openURL() {
super.onClick(mView);
}
}
Siguiente el método para intercambiar las diferentes clases abarcan:
private void swapSpans(TextView textView) {
Spannable spannable = (Spannable) textView.getText();
URLSpan[] spans = textView.getUrls();
for(URLSpan span : spans) {
if(span.getURL().toString().startsWith("tel:")) {
spannable.setSpan(new ConfirmSpan(span), spannable.getSpanStart(span), spannable.getSpanEnd(span), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spannable.removeSpan(span);
}
}
}
Finalmente todo lo que tiene que hacer es crear un TextView con el atributo autoLink:
android:autoLink="phone"
Y recuerde llamar al método swapSpans()
. Entiendo que escribí esto por diversión, puede haber otros métodos para hacerlo, pero no los conozco en este momento. ¡Espero que esto ayude!
Una solución sería extender ClickableSpan para hacer su propia manipulación costumbre de hacer clic en el enlace: http://developer.android.com/reference/android/text/style/ClickableSpan.html Consulte también este hilo: http://stackoverflow.com/questions/11413399/open-textview-links-at-another-activity-not- default-browser – almalkawi