Cómo llamar a la interfaz de información detallada del programa del sistema Android
En el último SDK de Android 2.3 (API nivel 9), se proporciona dicha interfaz. En la ruta del documento
docs/reference/Android/provider/SETTINGS html # ACTION _ APPLICATION _ DETAILS _ SETTINGS
A continuación, hay una descripción:
Cadena final estática pública ACTION_APPLICATION_DETAILS_SETTINGS Desde: API nivel 9
Acción de actividad: Mostrar la pantalla de detalles de una aplicación específica.
En algunos casos, es posible que no haya actividad coincidente, así que asegúrese de protegerse contra esto.
Entrada: el URI de datos de la intención especifica el nombre del paquete de la aplicación que se mostrará, con el esquema "paquete". Eso es "paquete: com.my.app".
Salida: Nada.
Valor constante: "Android. CONFIGURACIÓN. aplicación_DETALLES_CONFIGURACIÓN"
Es decir, solo necesitamos realizar la acción del proveedor de Android_aplicación. _ configuración como Operación; "Paquete: nombre del paquete de la aplicación" se usa como URI, y startActivity se puede usar para iniciar la interfaz de información de la aplicación. El código es el siguiente:
Ver plano
Intent intent = new intent (settings. action_application_details_settings);
Uri uri = Uri.fromParts( SCHEME, packageName , null);
intent . setdata (uri);
startActivity (intent);
Sin embargo, antes de Android 2.3, las interfaces relevantes no estaban expuestas.
Viendo el código fuente de la plataforma/paquete/aplicación/configuración de configuración del sistema. git, podemos encontrar que la interfaz de información de la aplicación es InstalledAppDetails.
Aquí (2.1) y aquí (2.2), podemos ver cómo los programas de gestión de aplicaciones (ManageApplications.java) de Android2.1 y Android2.2 inician InstalledAppDetails respectivamente.
Ver plano
//Método práctico para iniciar actividades secundarias
Private void startApplicationDetailsActivity(){
//Iniciar creación Intención de nueva actividad
Intención intención = nueva intención (intention.
ACTION_VIEW);
intent.setClass(this, installappdetails.class);
intent.putextra(APP_PKG_name, mCurrentPkgName);
//Iniciar una nueva actividad para mostrar información extendida
startActivityForResult(intent, INSTALLED _ APP _ DETAILS
}
Pero la definición de la constante APP_PKG_NAME es diferente.
Definido como "pkg" en 2.2 y "com. Android. settings. application pkgname" en 2.1.
Luego, para las versiones 2.1 e inferiores, podemos llamar a InstalledAppDetails de esta manera:
Ver sin formato
Intención i = new Intent (Intention.ACTION_VIEW); /p>
I . set class name(" com . Android . settings ", " com . Android . settings .installappdetails ");
I . pkgname ", nombre del paquete);
Iniciar actividad (1);
Para 2.2, simplemente reemplace el primer parámetro de putExtra anterior con "pkg"
Para En resumen, el código general para llamar a "información de la aplicación" es el siguiente:
Ver plano
private static final String SCHEME = " package ";
/ * *
* Se requiere un nombre adicional para llamar a la interfaz InstalledAppDetails del sistema (para Android 2.1 y versiones anteriores).
*/
Cadena final estática privada APP_PKG_NAME_21 = " com . Android . settings . applicationpkgname "
/**
* Se requiere un nombre adicional para llamar a la interfaz InstalledAppDetails del sistema (aplicable a Android 2.2)
*/
Cadena final estática privada APP_PKG_NAME_22 = " pkg ";
/**
El nombre del paquete donde se encuentra los detalles de la aplicación instalada.
*/
Cadena final estática privada APP_DETAILS_PACKAGE_NAME = " com . Android . settings "
/**
* Clase InstalledAppDetails nombre
*/
Cadena final estática privada APP_DETAILS_CLASS_NAME = "com.Android.settings.installedappdetails";
/**
* Llame a la interfaz InstalledAppDetails del sistema para mostrar información detallada de las aplicaciones instaladas.
Para Android 2.3 (nivel de API
* 9) y superior, utilice la interfaz proporcionada por el SDK; por debajo de 2.3, utilice la interfaz no pública (consulte el código fuente de InstalledAppDetails).
*
* @param context
*
* @param nombre del paquete
* Nombre del paquete de la aplicación
*/
public static void showInstalledAppDetails(Context Context, String packageName) {
Intent Intent = new Intent();
final int apiLevel = Construir. Versión. SDK _ INT
si (nivel de API gt; = 9) {// 2.3 (ApiLevel 9) o superior, utilice la interfaz proporcionada por el SDK.
intent.setAction(setting.Action_Application_Details_Settings);
Uri uri = Uri.fromParts(SCHEME, packageName, null);
intent setdata(uri) ;
} else {//2.3 a continuación, utilice una interfaz no pública (consulte el código fuente de InstalledAppDetails).
//En 2.2 y 2.1, el APP_PKG_name utilizado por InstalledAppDetails es diferente.
Cadena final appPkgName = (apiLevel == 8?APP_PKG_name_22
:APP_PKG_name_21);
intent .setAction(Intent.ACTION_VIEW);
intent .set class NAME(APP_DETAILS_PACKAGE_NAME,
APP_DETAILS_CLASS_NAME);
intent.putExtra(appPkgName, nombre del paquete);
}
context.startActivity(intención);
}