Android获取apk安装包的版本及包名等信息

2016-06-18 11:58 评论 0 条

一.摘要

获取当前APP应用的版本及包名信息需要先了解一下PackageManager这个类,位于android.content.pm包下。在这里PackageManager要实现的功能:完成自动更新,随时检查服务器上传的apk文件版本信息,如果是新版本,自动后台下载,下载完成后提供每次启动APP应用,提供用户安装新版本,类似新浪新闻APP的更新功能。

二.了解PackageManager

该类可以获得当前已安装应用与应用包相关的各种信息,同时是一个abstract类,在当前Activity调用getPackageManager()方法实例化。在PackageManager开发文档中,实例化后的PackageManager调用对应的抽象方法,执行特定操作,获取需要的信息,比如:获取packageName,代码:

  1. PackageManager pm=getPackageManager()  
  2. ApplicationInfo applicationInfo=pm.getApplicationInfo("sdcard/demo.apk",PackageManager.GET_ACTIVITIES);  
  3. String packageName=applicationInfo.packageName;  

三.熟悉常用功能

1.获取当前设备安装的应用程序ApplicationInfo相关信息

  1. List<ApplicationInfo> list=pm.getInstalledApplications(PackageManager.GET_META_DATA);  
  2.    Iterator iter=list.iterator();  
  3.    while(iter.hasNext()){  
  4.                 ApplicationInfo applicationInfo=(ApplicationInfo) iter.next();  
  5.                 Log.d(TAG,applicationInfo.packageName);  
  6. }  

001-ApplicationInfo

2.获取当前应用程序所有注册的Permission

  1. List<PermissionGroupInfo> list=pm.getAllPermissionGroups(PackageManager.GET_META_DATA);  
  2.    Iterator iter=list.iterator();  
  3.    while(iter.hasNext()){  
  4.                 PermissionGroupInfo permissionInfo=(PermissionGroupInfo) iter.next();  
  5.                 Log.d(TAG,permissionInfo.loadDescription(pm) );  
  6. }  

002-PermissionGroup

3.获取当前应用程序的配置状态,返回值下面之一:COMPONENT_ENABLED_STATE_ENABLED, COMPONENT_ENABLED_STATE_DISABLED, or COMPONENT_ENABLED_STATE_DEFAULT

  1. int state=pm.getApplicationEnabledSetting("sdcard/demo.apk");  

4.获取当前应用程序的Logo

  1. Drawable drawable=pm.getApplicationIcon(applicationInfo);  
  2. mImageView.setImageDrawable(drawable);  

5.获取当前应用程序的版本名称versionName

  1. String version=applicationInfo.versionName;  

5.获取当前应用程序的ActivityInfo相关信息

  1. <activity android:name=".packages.PackageInfoActivity" android:launchMode="singleTop">             
  2.             <meta-data  
  3.                 android:name="name"  
  4.                 android:value="I am PackageInfoActivity!" >  
  5.             </meta-data>  
  6. </activity>  
  1. ActivityInfo activityInfo=pm.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);  
  2. String value=activityInfo.metaData.getString("name");  
  3. int mode=activityInfo.launchMode;  

四.开发一个应用程序管理器

打开手机“设置——>应用程序管理”进入的界面,列出当前设备已安装的Application,在上面介绍获取所有Application,获取Application Logo以及Application Label的方法,在布局界面添加一个ListView展示应用程序信息,这样一个简单的应用程序管理器初级界面就完成了,添加对应的OnItemClickListener接口后,方便对应Application进行“停止”和“卸载”操作。

五.开发Application自动更新功能

自动更新功能的原理:通过比较已安装应用程序的versionName和推送应用程序的versionName是否不同,如果推送的versionName是高版本(新版本),开启后台线程下载新版本,通常检测网络环境是否处于wifi状态后执行下载,下载完成在个人中心“检查更新”栏目出现多点,同时启动应用程序,弹出更新提示框(应该叫弹出安装提示框更差当),点击“更新”完成安装,比如:新浪新闻,网易新闻,提示更新时已下载好安装包到本地。
recycler-onitemclicklistener-demo

当前文章价值5.71元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://www.teachcourse.cn/1818.html ,谢谢支持!

资源分享

Android单元测试 Android单元测试
Genymotion启动提示”Unable to start the virtual device“ Genymotion启动提示”Unable t
harmony学习状态管理State关键字 harmony学习状态管理State关键字
Python内置关键字详细用法(2) Python内置关键字详细用法(2)

发表评论

呲牙 憨笑 坏笑 偷笑 色 微笑 抓狂 睡觉 酷 流汗 鼓掌 大哭 可怜 疑问 晕 惊讶 得意 尴尬 发怒 奋斗 衰 骷髅 啤酒 吃饭 礼物 强 弱 握手 OK NO 勾引 拳头 差劲 爱你

表情