Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检索包中的图标失败_Android_Exception - Fatal编程技术网

Android 检索包中的图标失败

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

我的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 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";