мое приложение для 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();
}
Кто-нибудь знает, что может вызвать эту проблему?
С уважением,
Митя