PackageManager的applicationInfo.name始终为null

PackageManager pm = this.getPackageManager(); ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE); List 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返回有效的包名称,但applicationInfo.name始终为null。

使用applicationInfo.loadLabel(packageManagerInstance)来查找应用程序名称,但应该有一个原因,即applicationInfo.name不起作用。

编辑

applicationInfo.nameApplication子类的名称(如果有)。

名称为null的原因是它确实是… null。

请参阅Android清单文档:

android:name为应用程序实现的Application子类的完全限定名称。 启动应用程序进程时,将在任何应用程序的组件之前实例化此类。

子类是可选的; 大多数应用程序不需要一个。 在没有子类的情况下,Android使用基本Application类的实例。

你想要的是应用程序的名称,它在应用程序标签的label属性中设置,并且Ragunath解释了如何获取。

尝试这个

 Log.d(TAG, ai.processName + ""); 

或这个

 Log.d(TAG, ai.packageName + "");