PackageManager的applicationInfo.name始终为null

Rag*_*har 18 android process

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

process.processName返回有效的包名称,但applicationInfo.name始终为null.

Rag*_*har 31

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

编辑

applicationInfo.nameApplication如果您有子类的名称.


Dan*_*icz 8

名称为null的原因是它确实是... null.

请参阅Android清单文档:

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

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

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