Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo capturar una excepción (ActivityNotFoundException) durante el uso de LinkMovementMethod

Tengo actualmente un TextView con algunos números de teléfono HTML y url.

He notado que podemos usar el método setMovementMethod para hacer que estos vínculos se puedan hacer clic:

tv.setText("Phone number is: +32485123456 and url is http://www.blabla.com"); tv.setMovementMethod(LinkMovementMethod.getInstance()); 

Esto funciona bastante bien, pero en algunos dispositivos, se bloquea con ActivityNotFoundException y que es bastante understanble. (Ver código abajo)

Estos problemas aparecen en mi consola de desarrollo y no puedo reproducirlos.

El gran problema que estoy enfrentando es que no puedo intentar / capturar código en mi actividad como el clic es manejado por LinkMovementMethod

¿Alguna idea de cómo puedo evitar esos errores?

 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=www.vlaamsbrabant.be/zoutleeuw (has extras) } at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) at android.app.Activity.startActivityForResult(Activity.java:2817) at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817) at android.app.Activity.startActivity(Activity.java:2923) at android.text.style.URLSpan.onClick(URLSpan.java:62) at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:216) at android.widget.TextView.onTouchEvent(TextView.java:6788) at android.view.View.dispatchTouchEvent(View.java:3766) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1896) at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1159) at android.app.Activity.dispatchTouchEvent(Activity.java:2086) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1880) at android.view.ViewRoot.handleMessage(ViewRoot.java:1811) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:4627) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) at dalvik.system.NativeStart.main(Native Method) 

  • Cómo obtener las coordenadas XY y el tamaño de píxeles de un TextView?
  • Android SDK equivlent para viewWillAppear (iOS)?
  • Android HorizontalScrollView con layout_gravity correcto trabajando mal
  • Cómo ajustar texto a la siguiente línea en un Android TextView?
  • Cómo quitar la etiqueta de HTML en android?
  • Android - epub reader para leer archivos .epub ..
  • Fórmula química en Android
  • Actualización de Android TextView en subprocesos y ejecución
  • 2 Solutions collect form web for “Cómo capturar una excepción (ActivityNotFoundException) durante el uso de LinkMovementMethod”

    Siempre puedes extender LinkMovementMethod y capturar el error allí.

    Algo como:

     private class MovementCheck extends LinkMovementMethod { @Override public boolean onTouchEvent( TextView widget, Spannable buffer, MotionEvent event ) { try { return super.onTouchEvent( widget, buffer, event ) ; } catch( Exception ex ) { Toast.makeText( MainActivity.this, "Could not load link", Toast.LENGTH_LONG ).show(); return true; } } } 

    Mostrará un mensaje de error en el caso de que no haya una configuración de aplicación para manejar la intención.

    Otra opción es utilizar el método en esta pregunta para determinar antes de tiempo si algo está preparado para manejar sus enlaces.

    Si su textview su origen está en xml usted puede intentar un aproach definido aquí .
    Maby (estoy casi seguro de ello.) Pero el sistema operativo manejar esto para u.

    Si esto no funciona, entonces debe escribir el código de independencia del dispositivo para tablets y para teléfonos. En este caso, maby que esta publicación te guiará. Cuando es un teléfono que permitirá la vinculación y de lo contrario no.

    Maby separar los 2 enlaces en 2 textviews porque el OS puede hacer cualquiera de los enlaces (sitio web) thats forma prob lo hace clicable y se bloquea cuando se intenta hacer clic en el número uno phonenumber

    Espero que esto ayude.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.