首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从sdcard文件中获取apk信息

从sdcard文件中获取apk信息
EN

Stack Overflow用户
提问于 2012-06-07 09:07:14
回答 2查看 3.6K关注 0票数 1
代码语言:javascript
复制
        String apkPath = apk.getAbsolutePath();
        Log.i(getClass().getName(), "addApk(): apkPath = " + apkPath);
        PackageInfo localPackageInfo = pm.getPackageArchiveInfo(apkPath, 0);
        localPackageInfo.applicationInfo.sourceDir = apkPath;//! null point exception

无法得到apk的图标,名字,版本等。我也尝试了魔术数字8192而不是0,但也不起作用。有人有什么建议吗?提前行动!

我把我的代码改为:

代码语言:javascript
复制
        PackageInfo pi = pm.getPackageArchiveInfo(apkPath, PackageManager.GET_ACTIVITIES);
        if (pi != null) {
            ApplicationInfo ai = pi.applicationInfo;
            Drawable appIcon = pm.getApplicationIcon(ai);
            String appName = pm.getApplicationLabel(ai).toString();
            String appVersion = pi.versionName;
            String pkgName = ai.packageName;

            Log.i(getClass().getName(), "pkgName = " + pkgName + ", appName = " + appName + ", appVersion = " + appVersion);
            adapter.add(new InstallItem(pkgName, appIcon, appName, appVersion));
        }

得到了这样的输出:

pkgName = com.chaozh.iReaderFree,appName = com.chaozh.iReaderFree,appVersion = 1.3.2.0 .

正如您在这里看到的,我无法获得应用程序名称,它的图标总是默认相同的图标。我厌倦了市场上的其他安装程序,它们工作得很好,所以有人告诉我怎么做?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-15 12:54:19

这是正确的答案,有一些窍门(SDK>8!):

代码语言:javascript
复制
public Drawable getApkIcon(String path){      
    PackageManager pm = getPackageManager();      
    PackageInfo info = pm.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES);      
    if(info != null){      
        ApplicationInfo appInfo = info.applicationInfo;

        if(Build.VERSION.SDK_INT >= 8){
            appInfo.sourceDir = path;
            appInfo.publicSourceDir = path;
        }

        return appInfo.loadIcon(pm);
    }           
    return null;
}
票数 1
EN

Stack Overflow用户

发布于 2015-04-08 08:51:36

最简单的方法只是使用它的packageName获取任何应用程序的图标

代码语言:javascript
复制
public static final Drawable getIconOfAppUsingPackageName(Context context,String packageName)
{
 Drawable icon = context.getPackageManager().getApplicationIcon(packageName);
 imageView.setImageDrawable(icon);
 return icon;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10928826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档