Ошибка получения значка в пакете - PullRequest
2 голосов
/ 24 октября 2011

мое приложение для Android недавно показало странное поведение. Приведенное ниже исключение NullPointerException генерируется только на определенных устройствах, например, это исключение выдает устройство Motorola Defy с Android 2.3.4. Хотя он отлично работает на Froyo 2.3.6 Nexus One и 2.2. HTC Desire, а также на планшетных устройствах Honeycomb. Интересно то, что я нигде не обращаюсь к AppIcon в коде. Вот след стека, брошенный Motorola Defy:

W/PackageManager(14947): Failure retrieving icon 0x7f020004 in package com.a.project
W/PackageManager(14947): java.lang.NullPointerException
W/PackageManager(14947):    at android.app.ActivityThread$ResourcesKey.<init>(ActivityThread.java:1138)
W/PackageManager(14947):    at android.app.ActivityThread.getTopLevelResources(ActivityThread.java:1207)
W/PackageManager(14947):    at android.app.ActivityThread.getTopLevelResources(ActivityThread.java:1266)
W/PackageManager(14947):    at android.app.ContextImpl$ApplicationPackageManager.getResourcesForApplication(ContextImpl.java:2439)
W/PackageManager(14947):    at android.app.ContextImpl$ApplicationPackageManager.getDrawable(ContextImpl.java:2332)
W/PackageManager(14947):    at android.content.pm.PackageItemInfo.loadIcon(PackageItemInfo.java:140)
W/PackageManager(14947):    at android.app.ContextImpl$ApplicationPackageManager.getApplicationIcon(ContextImpl.java:2387)
W/PackageManager(14947):    at com.motorola.filemanager.utils.IconifiedText.buildIconItem(IconifiedText.java:287)
W/PackageManager(14947):    at com.motorola.filemanager.local.DirectoryScanner.run(DirectoryScanner.java:83)

Проведя некоторое исследование, я обнаружил следующую статью, которая не дала конкретного ответа, что может быть причиной проблемы:
http://code.google.com/p/android/issues/detail?id=9151

Я установил следующее разрешение в файле манифеста:

android.permission.WRITE_EXTERNAL_STORAGE

Единственное место, где я получаю доступ к PackageManager в своем коде, предназначено для восстановления версииName:

try {
    PackageManager manager = context.getPackageManager();
    return manager.getPackageInfo(context.getPackageName(), 0).versionCode;
} catch (Exception e) {
    e.printStackTrace();
}

Кто-нибудь знает, что может вызвать эту проблему?

С уважением,
Митя

Ответы [ 2 ]

2 голосов
/ 07 августа 2012

Исключение нулевого указателя в

om.motorola.filemanager.utils.IconifiedText.buildIconItem(IconifiedText.java:287).
android.content.pm.PackageItemInfo.loadIcon(PackageItemInfo.java:140). 

, поэтому я предполагаю, что ваш проект где-то загрузил значок apk.Перед loadIcon вы должны добавить следующие две строки:

pkg.applicationInfo.sourceDir = "apkpath";  //"apkpath" is your apk's absolute path
pkg.applicationInfo.publicSourceDir = "apkpath";
0 голосов
/ 11 апреля 2014

до того, куда вы вернетесь .... add: PackageInfo packageInfo = getPackageManager (context) .getPackageInfo (context.getPackageName (), 0);packageinfo.applicationInfo.sourceDir = mSavePath + "/" + APKNAME; // ваш apk абсолютный packageinfo.applicationInfo.publicSourceDir = mSavePath + "/" + APKNAME; // ваш apk абсолютный

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...