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.

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 + ""); 
  • ¿Cómo puede una aplicación de Android tener más de un proceso?
  • Cualquier manera de comprobar si un proceso en ejecución es un proceso del sistema en android
  • ¿Las aplicaciones que utilizan varios procesos comparten una instancia de Dalvik?
  • Android - ¿Cómo decidir si ejecutar un servicio en un proceso separado?
  • Cuando su BroadcastReceiver se invoca a través de un Intent, ¿en qué proceso se ejecuta?
  • Obtención de una lista de procesos en ejecución y eliminación de un proceso específico
  • Servicio de Android: proceso vs. no
  • Obtener (real) proceso de primer plano mediante activityManager.getRunningAppProcesses ()
  • ¿Los fragmentos con setRetainInstance (true) sobreviven al cierre del proceso?
  • Cómo forzar a detener una aplicación de Android
  • Android: mantener vivo un servicio de fondo (prevenir la muerte del proceso)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.