详细查了网上相关的讨论,也仔细看了android的帮助文档就是找不着答案 。使用getApplicationIcon(appInfo)函数总是失败,最后总是返回android默认程序图标,Failure retrieving icon 0x702xxxxxx  in package com.example.XXXXXXX,  请问各位大侠, 有没有人解决了这问题??
    getApplicationIcon(pkgName)函数却只能返回已安装程序的图标。/** 获取未安装的APK信息    
     * @param context    
     * @param archiveFilePath APK文件的路径。如:/sdcard/download/XX.apk    
     */     
    public void getUninatllApkInfo(Context context, String archiveFilePath){      
        PackageManager pm = context.getPackageManager();      
        PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);      
        if(info != null){      
            ApplicationInfo appInfo = info.applicationInfo;      
            String appName = pm.getApplicationLabel(appInfo).toString();      
            String packageName = appInfo.packageName;      
            Drawable icon = pm.getApplicationIcon(appInfo);      
        }      
    }

解决方案 »

  1.   

        查看了一下目前比较流选择几个文件浏览器,ASTRO也无法正常 显示未安装程序图标,ES可以。不知道EStrong是怎么实现的?
      

  2.   

    2.2中有两种方法,第二种万能的吧,不过费点体力1. 有个未公开的api在asset类中,需要自己编译下sdk。
    2. 自己解析androidmanifest.xml提取出icon的位置,直接解压apk中的/res/图片的位置。
      

  3.   

    google 这点做的挺不厚道的, 为什么本来用的好好的API ,就改了,而且还不提供替代的API, 搞的程序要做个适配太麻烦了。
      

  4.   

    恩,你肯定是2.2时不能用了吧,我在2个月前自己编译了下sdk,用了一个非公开的api,解决了,google比较2
      

  5.   

    http://blog.csdn.net/sodino/archive/2011/03/01/6215224.aspx请参考
      

  6.   

    楼主在pm.getApplicationIcon之前加上这两行代码就可以了: appInfo.sourceDir="/sdcard/xxx.apk";
                        appInfo.publicSourceDir="/sdcard/xxx.apk";