Подтвердить что ты не робот

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.

4b9b3361

Ответ 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 + "");