AlertDialog con urls y texto

Estoy tratando de mostrar en un android AlertDialog algún texto y algunas palabras para ser clicable la apertura de una página web. Estoy haciendo algo mal con ella porque no abre el enlace que le estoy diciendo y el texto del agujero es clicable, que estoy tratando de evitar …. Este es mi código:

final SpannableString s = new SpannableString( Html.fromHtml("<br><a href=\"http://google.com\">a new link</a>") ); final TextView tx1 = new TextView(this); tx1.setText(getString(R.string.librarytextpart1) + s + getString(R.string.librarytextpart2)); tx1.setAutoLinkMask(RESULT_OK); tx1.setMovementMethod(LinkMovementMethod.getInstance()); Linkify.addLinks(s, Linkify.ALL); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.library)) .setCancelable(false) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }) .setView(tx1).show(); 

Cuando se hace clic en el texto SpannableString en el cuadro de diálogo, muestra que todo el texto es clicable … y aún no abre una página web. Seguro que no entiendo algo de la documentación, pero no veo qué. ¿Me puede ayudar por favor?

One Solution collect form web for “AlertDialog con urls y texto”

Con Html.fromHtml () recibirá el texto HTML ya formateado de una cadena dada.

Aplicado a su caso esto daría lugar a un "nuevo vínculo" – pero el "href" a continuación es ignorado por el cuadro de diálogo de alerta ya que no está mostrando HTML. Así que el linkificador no hace nada en su código. Trate de comentarlo – el comportamiento se mantendrá igual.

Con el Linkifier, puede convertir patrones arbitrarios de texto (RegExes) en enlaces que se pueden hacer clic. Puede agregar, por ejemplo, una cadena que coincida con su expresión regular con un URI de contenido "base" predefinido. Así que no sólo funciona para los sitios web, sino para cada URI de contenido utilizado en Android. Para más información sobre el que se refieren a Google DevSite .

Usted podría utilizar el Linkificador sin expresiones regulares, hay algunos patrones estándar incluidos. Estos son direcciones de correo electrónico, números de teléfono, coordenadas de mapas o un sitio web. Así que para que su solución funcione:

  1. Establece la cadena spannable a una URL normal (no HTML)
  2. Basta con añadir enlaces para el tipo "WEB_URLS" (Linkify.WEB_URLS) (Linkify.ALL "buscará" todos los patrones predefinidos como se indicó anteriormente)

Y funcionará.

He ajustado su código, ahora en el AlertWindow, la URL "www.google.com" debe ser clicable:

 final SpannableString s = new SpannableString("www.google.com"); final TextView tx1 = new TextView(this); tx1.setText(getString(R.string.librarytextpart1) + s + getString(R.string.librarytextpart2)); tx1.setAutoLinkMask(RESULT_OK); tx1.setMovementMethod(LinkMovementMethod.getInstance()); Linkify.addLinks(s, Linkify.WEB_URLS); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.library)) .setCancelable(false) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }) .setView(tx1).show(); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.