PackageManager applicationInfo.name всегда имеет значение null
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
возвращает допустимое имя пакета, но applicationInfo.name
всегда равно null.
Ответы
Ответ 1
Используется applicationInfo.loadLabel(packageManagerInstance)
, чтобы найти имя приложения, но должна быть причина, по которой applicationInfo.name
не работает.
Edit
applicationInfo.name
- это имя подкласса Application
, если у вас есть.
Ответ 2
Имена причины - это то, что это действительно... null.
Обратитесь к документации манифеста Android:
android: name Полноценное имя подкласса Application для приложения. Когда запускается процесс приложения класс создается до любого из компоненты приложения.
подкласс не является обязательным; большинство приложениям это не понадобится. в отсутствие подкласса, Android использует экземпляр базового приложения класс.
То, что вы хотите, - это имя приложения, которое установлено в атрибуте метки тега приложения и которое Рагунат объяснил, как получить.
Ответ 3
Попробуйте это
Log.d(TAG, ai.processName + "");
или
Log.d(TAG, ai.packageName + "");