Android 检索包中的图标失败
我的Android应用程序最近出现了一些奇怪的行为。下面包含的NullPointerException仅在特定设备上引发,例如,带有Android 2.3.4的Motorola Defy设备会产生此异常。尽管它在Froyo 2.3.6 Nexus One和2.2上运行良好。HTC Desire,以及蜂窝平板电脑设备。有趣的是,我自己在代码中的任何地方都没有访问AppIcon。这是Motorola Defy抛出的堆栈跟踪:Android 检索包中的图标失败,android,exception,Android,Exception,我的Android应用程序最近出现了一些奇怪的行为。下面包含的NullPointerException仅在特定设备上引发,例如,带有Android 2.3.4的Motorola Defy设备会产生此异常。尽管它在Froyo 2.3.6 Nexus One和2.2上运行良好。HTC Desire,以及蜂窝平板电脑设备。有趣的是,我自己在代码中的任何地方都没有访问AppIcon。这是Motorola Defy抛出的堆栈跟踪: W/PackageManager(14947): Failure retr
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)
我在代码中访问PackageManager的唯一位置是出于versionName检索目的:
try {
PackageManager manager = context.getPackageManager();
return manager.getPackageInfo(context.getPackageName(), 0).versionCode;
} catch (Exception e) {
e.printStackTrace();
}
有人知道是什么导致了这个问题吗
致以最诚挚的问候,Mitja空指针异常位于
om.motorola.filemanager.utils.IconifiedText.buildIconItem(IconifiedText.java:287).
android.content.pm.PackageItemInfo.loadIcon(PackageItemInfo.java:140).
所以我猜你的项目在某处加载了apk的图标。在加载图标之前,应添加以下两行:
pkg.applicationInfo.sourceDir = "apkpath"; //"apkpath" is your apk's absolute path
pkg.applicationInfo.publicSourceDir = "apkpath";
在你回来之前。。。。
加:
PackageInfo-PackageInfo=getPackageManager(context).getPackageInfo(context.getPackageName(),0);
packageinfo.applicationInfo.sourceDir=mSavePath+“/”+APKNAME//你的apk绝对值
packageinfo.applicationInfo.publicSourceDir=mSavePath+“/”+APKNAME//你的apk绝对值
pkg.applicationInfo.sourceDir = "apkpath"; //"apkpath" is your apk's absolute path
pkg.applicationInfo.publicSourceDir = "apkpath";