从未安装APK中得到APK的Lable/ICON信息

网上流传的方法

 publicstatic 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; 

           StringappName =pm.getApplicationLabel(appInfo).toString(); 

           String packageName = appInfo.packageName; 

           Drawableicon =pm.getApplicationIcon(appInfo);

       }

   }

其中archiveFilePath变量为apk文件的绝对路径,如/mnt/sdcard/abc.apk.这种方法可以正常得到APK的包名,但是ICON及Label(即程序中appName)提示有NullPointerException错误,不能得到对应的值,而是返回了包名packageName.貌似只有Android2.1及以下版本可以适用。在高版本中无法正确得到。


其实呢,是可以得到的,只是还需要添加两行代码。


appInfo.sourceDir = archiveFilePath;
appInfo.publicSourceDir = archiveFilePath;


即在得到的ApplicationInfo中设置sourceDir和publicSourceDir为APK绝对路径即可。

据测试,在Android4.2版本可正常运行。

折腾了半天,终于在同学的帮助下搞定了这个问题。好好学习,天天向上~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值