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

2016-06-18 11:58 阅读 6,724 次 评论 0 条
版权声明:本文著作权归TeachCourse所有,未经许可禁止转载,谢谢支持!
转载请注明出处:http://teachcourse.cn/1818.html

一.摘要

获取当前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

关注公众号 扫一扫二维码,加我QQ

如果文章对你有帮助,欢迎点击上方按钮关注作者

来源:TeachCourse每周一次,深入学习Android教程,关注(QQ1589359239或公众号TeachCourse)
转载请注明出处:http://teachcourse.cn/1818.html
Android开发之深入理解Builder设计模式 Android开发之深入理解Builder
初始化布局带inflate方法指定父容器的作用 初始化布局带inflate方法指定父容
Android开发之深入理解泛型extends和super的区别 Android开发之深入理解泛型exte
生活杂谈之阿里云免费虚拟主机申请过程详解 生活杂谈之阿里云免费虚拟主机申

发表评论

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

表情