Proteger contra "una actividad coincidente no puede existir" en la configuración de Android
La mayoría de las acciones de la actividad (utilizadas para iniciar varias actividades de configuración) en la clase Configuración vienen con una advertencia:
En algunos casos, puede que no exista una actividad coincidente, así que asegúrate de protegerte contra esto.
Entonces, ¿cómo protegerse contra esto?
try { final Intent i = new Intent(Settings. ACTION_WIRELESS_SETTINGS); // say i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // not sure if needed startActivity(i); } catch (Exception e) { // what should I catch here // I would hate to catch Throwable, but should I ? }
Si leo esto correctamente, por ejemplo, se genera una excepción de tiempo de ejecución (NPE). Me encantaría usar algo más específico, como ActivityNotFoundException
– pero es suficiente?
- SINGLE_TOP | CLEAR_TOP parece funcionar el 95% del tiempo. ¿Por qué el 5%?
- Facebook Sdk no ha sido inilizado
- Inicio de una nueva actividad dentro de doInBackGround () de AsyncTask
- Android: ¿Cómo vas a otra actividad al hacer clic?
- Cómo solucionar el error como java.lang.Throwable: setStateLocked?
- Cómo hacer espacio entre spannable cadena en Android?
- ¿Cuándo el fragmento está finalmente conectado a la actividad?
- Android: ¿está usando setContentView varias veces mal mientras cambia los diseños?
Si leo esto correctamente, por ejemplo, se genera una excepción de tiempo de ejecución (NPE)
No, ese es otro problema. El Intent
funcionó claramente, ya que el accidente viene de Configuración en sí, no la aplicación que se llama startActivity()
.
Me encantaría usar algo más específico, como ActivityNotFoundException – pero es suficiente?
Debería ser.
Si le preocupa eso, o prefiere ser proactivo, en lugar de simplemente llamar a startActivity()
, primero use PackageManager
y resolveActivity()
. Si eso devuelve null
, no hay ninguna actividad que coincida con el Intent
, y debe probar otra cosa.
- Implementar un escucha para una clase en lugar de una instancia
- Android ver el relleno o los márgenes por defecto