ApplicationInfo.name в PackageManager всегда равно нулю - PullRequest
18 голосов
/ 26 октября 2010
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 всегда равно нулю.

Ответы [ 3 ]

31 голосов
/ 26 октября 2010

Используется applicationInfo.loadLabel(packageManagerInstance) для поиска имени приложения, но должна быть причина, по которой applicationInfo.name не работал.

Редактировать

applicationInfo.name - это имя подкласса Application, если у вас есть.

8 голосов
/ 24 февраля 2011

Причина, по которой имя пустое, в том, что оно на самом деле ... пустое.

См. Документацию манифеста Android:

android: name Полное имя подкласса приложения, реализованное для приложения.Когда процесс приложения запускается, этот класс создается перед любым из компонентов приложения.

Подкласс необязательный;большинству приложений он не нужен.В отсутствие подкласса Android использует экземпляр базового класса Application.

То, что вы хотите, это имя приложения, которое установлено в атрибуте label тега application, и котороеРагунатх объяснил, как добраться.

0 голосов
/ 26 октября 2010

Попробуйте это

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

или это

Log.d(TAG, ai.packageName + "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...