Propósito de la página de detalles de la aplicación

Mi aplicación se basa en gran medida en una base de datos de datos y, a veces, la base de datos no se copia correctamente, se corrompe, o simplemente lanza un strop genérico. Limpiar los datos de la aplicación y volver a abrir la aplicación parece funcionar bien, pero es una tarea bastante pedir a mis usuarios que busquen las páginas de configuración y estoy buscando una manera de llegar rápidamente a la página de detalles de la aplicación Desinstalar, mover a SD, borrar datos, etc.)

He encontrado la acción Settings.ACTION_APPLICATION_DETAILS_SETTINGS Intent pero obtengo una ActivityNotFoundException cuando intento iniciarla como se describe en mi Desire Z. ¿Puede alguien ayudarme a cómo ordenar correctamente esto?

Gracias

EDIT: Como se indica en las respuestas, esto es sólo API9 y superior, el código que ahora uso si alguien quiere que esté por debajo. Creo que funciona en API3 y superiores.

 try { Intent i = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); i.addCategory(Intent.CATEGORY_DEFAULT); i.setData(Uri.parse("package:com.espian.formulae")); startActivity(i); } catch (ActivityNotFoundException ex) { Intent i = new Intent(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS); i.addCategory(Intent.CATEGORY_DEFAULT); startActivity(i); } 

Voy a publicar como respuesta aquí, además de mi comentario. Esa intención sólo está disponible a partir del nivel API 9 (2.3). El Desire Z no tiene 2.3 … todavía. 😉

Sé que esto es demasiado tarde respuesta, pero puede ayudar a alguien. Basado en la fuente de la plataforma (froyo), hago una función que abre la página de configuración de un paquete específico. Funciona en el emulador pero nunca lo probé en un dispositivo real. No sé si funciona en API <8 tampoco.

Aquí está:

 public boolean startFroyoInstalledAppDetailsActivity(String packagename) { boolean result = false; Intent i = new Intent(); i.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); i.setAction(Intent.ACTION_VIEW); i.putExtra("pkg", packagename); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); try { cx.startActivity(i); result = true; } catch (Exception ex) { result = false; } return result; } 

Basándome en tu código también hago una versión de Gingerbread que funciona en dispositivos reales con niveles de API 9, 10, 11, 12, 13, 14 y 15 pero se puede llamar de forma segura desde API 8 sin embargo en este caso se devolverá false.

Aquí está:

 public boolean startGingerbreadInstalledAppDetailsActivity(String packagename) { boolean result = false; Intent i = new Intent(); i.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); i.addCategory(Intent.CATEGORY_DEFAULT); i.setData(Uri.parse("package:" + packagename)); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); try { cx.startActivity(i); result = true; } catch (Exception ex) { result = false; } return result; } 
  • Android volver a la actividad anterior
  • BroadcastReceiver con múltiples filtros o BroadcastReceivers múltiples?
  • Cómo compartir imágenes en google Plus a través de una aplicación para Android?
  • Aplicación de inicio automático después del arranque completado en Android
  • El título de la aplicación para el acceso directo a la pantalla de inicio no cambia al cambiar el idioma del teléfono
  • ¿Cómo hacer que un botón envíe varias vistas de texto a mi correo electrónico?
  • Cómo ejecutar una aplicación en primer plano en las versiones de Android inferiores a 5.1
  • ¿Por qué los documentos de Android dicen que los extras de intenciones necesitan un prefijo de paquete
  • No puedo pasar demasiado grande arraylist de objetos entre 2 actividades?
  • ¿Hay alguna manera de consultar un tipo específico de filtros de intención aplicaciones capaces?
  • Cómo iniciar una nueva actividad después de éxito de inicio de sesión?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.