proceso - descargar android process media
El applicationInfo.name de PackageManager siempre es nulo (3)
PackageManager pm = this.getPackageManager();
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
for(RunningAppProcessInfo process : runningAppProcesses) {
try {
ApplicationInfo ai = pm.getApplicationInfo(process.processName, PackageManager.GET_META_DATA);
Log.d(TAG, applicationInfo.name + "");
} catch (NameNotFoundException e) {
e.printStackTrace();
}
}
process.processName
devuelve un nombre de paquete válido, pero applicationInfo.name
siempre es nulo.
La razón por la que el nombre es nulo es que realmente es ... nulo.
Por favor, consulte la documentación del manifiesto de Android:
android: name El nombre completo de una subclase de aplicación implementada para la aplicación. Cuando se inicia el proceso de solicitud, esta clase se crea una instancia antes que cualquiera de los componentes de la aplicación.
La subclase es opcional; la mayoría de las aplicaciones no necesitarán una. En ausencia de una subclase, Android usa una instancia de la clase de aplicación base.
Lo que desea es el nombre de la aplicación, que se establece en el atributo de etiqueta de la etiqueta de la aplicación, y que Ragunath explicó cómo obtener.
Prueba esto
Log.d(TAG, ai.processName + "");
o esto
Log.d(TAG, ai.packageName + "");
Se utilizó applicationInfo.loadLabel(packageManagerInstance)
para encontrar el nombre de la aplicación, pero debería haber una razón por la que applicationInfo.name
no funcionó.
Editar
applicationInfo.name
es el nombre de una subclase de Application
si tiene alguna.