2011-05-18 21 views
6

Mi aplicación depende en gran medida de una base de datos y, a veces, la base de datos no se copiará correctamente, se corrompe o simplemente arroja un strop genérico. Borrar los datos de la aplicación y luego volver a abrir la aplicación parece funcionar bien, pero es un gran esfuerzo pedirles a mis usuarios que busquen en las páginas de configuración, y estoy buscando una manera de acceder rápidamente a la página de detalles de la aplicación (que muestra el desinstalación, se mueven a SD, datos claros etc.)Propósito de la página de detalles de la aplicación

he encontrado el Settings.ACTION_APPLICATION_DETAILS_SETTINGS acción Intención pero consiguen una ActivityNotFoundException cuando intento poner en marcha tal como se describe en mi Desire Z. puede alguien ayudar a encontrar la manera de distribuir adecuadamente el presente ?

Gracias

EDIT: Como se observa en las respuestas, esto es sólo API9 y por encima, el código Ahora uso si alguien quiere que se encuentra por debajo. Creo que funciona en API3 y superior.

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); 

} 
+5

Esta intención sólo está disponible a partir del nivel de la API 9 (2.3). ¿Tiene su Desire Z 2.3 instalado? – jlindenbaum

+0

No, no, no se dio cuenta que era un nivel 9. :(eso es realmente molesto, pero gracias de todos modos! –

Respuesta

1

Lo publicaré como respuesta aquí además de mi comentario. Esa intención solo está disponible a partir del Nivel 9 de la API (2.3). El Desire Z no tiene 2.3 ... todavía. ;)

10

Sé que esto es demasiado tarde para responder, pero puede ayudar a alguien. En función de la fuente de la plataforma (froyo), realizo una función que abre la página de configuración de un paquete específico. Funciona en el emulador pero nunca lo intenté 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; 
} 

Sobre la base de su código también crea una versión de pan de jengibre, que funciona en dispositivos reales con niveles de API 9, 10, 11, 12, 13, 14 y 15, pero puede ser llamado de forma segura desde API 8; sin embargo, en este caso, devolverá falso.

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; 
} 
+0

¿qué hay de la api 17.18? –

+0

El segundo bloque de código es lo que quieres si el nivel de la API es más alto que 8. – Diederik

+0

Funcionó. ¡Thx! – tim4dev

Cuestiones relacionadas