El nombre de aplicación de PackageManager siempre es nulo
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.
- Cómo matar a mi propia actividad - la manera dura
- ¿Cómo algunas aplicaciones todavía pueden obtener los procesos actuales de las aplicaciones y matarlos?
- Lista de todos los procesos en ejecución en Android
- ¿El nombre del proceso es el mismo que el nombre del paquete en android?
- Android: El proceso secundario (logcat) continúa ejecutándose después de que el proceso padre (aplicación) falleció
- ¿Cuáles son los pros y los contras de usar múltiples procesos dentro de la aplicación Android
- ¿Cómo matar un proceso?
- Android BroadcastReceiver: ejecutarlo en el proceso por defecto o en uno nuevo?
- ¿Es posible iniciar una Actividad como un nuevo proceso
- Android proceso sigue vivo después de terminar las actividades
- ¿Cómo ejecutar una aplicación Qt en segundo plano en Android?
- La actividad de un proceso muerto sigue visible en la lista después de que presionó
- ¿Cómo matar una aplicación de terceros?
Utilizó applicationInfo.loadLabel(packageManagerInstance)
para encontrar el nombre de la aplicación, pero debería haber una razón por la cual applicationInfo.name
no funcionó.
Editar
Application
es el nombre de una subclase de la Application
si tiene alguna.
El nombre de la razón es nulo es que realmente es … null.
Consulte la documentación del manifiesto de Android:
Android: nombre El nombre completo de una subclase de aplicación implementada para la aplicación. Cuando se inicia el proceso de la aplicación, esta clase se instancia ante 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 utiliza una instancia de la clase de aplicación base.
Lo que quieres es el nombre de la aplicación, que se establece en el atributo label 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 + "");
- La aplicación para Android se publica, pero no se ve en ninguna parte de Google Play
- Android: ¿Obtener la altura del elemento ListView?