Red de conocimiento informático - Conocimiento informático - Cómo llamar a la interfaz de información detallada del programa del sistema Android

Cómo llamar a la interfaz de información detallada del programa del sistema Android

Llame a la interfaz "Información de la aplicación" del sistema Android y la lista "Configuración del sistema Android->Aplicaciones->Administrar aplicaciones" enumera las aplicaciones instaladas en el sistema. Seleccione uno de los programas para ingresar a la interfaz "Información de la aplicación". Esta interfaz muestra el nombre del programa, versión, almacenamiento, permisos y otra información, y tiene botones como desinstalar, detener, borrar caché, etc. Se puede decir que tiene muchas funciones. Si puede llamar a este panel al escribir programas relacionados (como el administrador de tareas), naturalmente le brindará una gran comodidad. Entonces, ¿cómo lograrlo?

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

}