一.摘要
获取当前APP应用的版本及包名信息需要先了解一下PackageManager这个类,位于android.content.pm包下。在这里PackageManager要实现的功能:完成自动更新,随时检查服务器上传的apk文件版本信息,如果是新版本,自动后台下载,下载完成后提供每次启动APP应用,提供用户安装新版本,类似新浪新闻APP的更新功能。
二.了解PackageManager
该类可以获得当前已安装应用与应用包相关的各种信息,同时是一个abstract类,在当前Activity调用getPackageManager()方法实例化。在PackageManager开发文档中,实例化后的PackageManager调用对应的抽象方法,执行特定操作,获取需要的信息,比如:获取packageName,代码:
- PackageManager pm=getPackageManager()
- ApplicationInfo applicationInfo=pm.getApplicationInfo("sdcard/demo.apk",PackageManager.GET_ACTIVITIES);
- String packageName=applicationInfo.packageName;
三.熟悉常用功能
1.获取当前设备安装的应用程序ApplicationInfo相关信息
- List<ApplicationInfo> list=pm.getInstalledApplications(PackageManager.GET_META_DATA);
- Iterator iter=list.iterator();
- while(iter.hasNext()){
- ApplicationInfo applicationInfo=(ApplicationInfo) iter.next();
- Log.d(TAG,applicationInfo.packageName);
- }
2.获取当前应用程序所有注册的Permission
- List<PermissionGroupInfo> list=pm.getAllPermissionGroups(PackageManager.GET_META_DATA);
- Iterator iter=list.iterator();
- while(iter.hasNext()){
- PermissionGroupInfo permissionInfo=(PermissionGroupInfo) iter.next();
- Log.d(TAG,permissionInfo.loadDescription(pm) );
- }
3.获取当前应用程序的配置状态,返回值下面之一:COMPONENT_ENABLED_STATE_ENABLED, COMPONENT_ENABLED_STATE_DISABLED, or COMPONENT_ENABLED_STATE_DEFAULT
- int state=pm.getApplicationEnabledSetting("sdcard/demo.apk");
4.获取当前应用程序的Logo
- Drawable drawable=pm.getApplicationIcon(applicationInfo);
- mImageView.setImageDrawable(drawable);
5.获取当前应用程序的版本名称versionName
- String version=applicationInfo.versionName;
5.获取当前应用程序的ActivityInfo相关信息
- <activity android:name=".packages.PackageInfoActivity" android:launchMode="singleTop">
- <meta-data
- android:name="name"
- android:value="I am PackageInfoActivity!" >
- </meta-data>
- </activity>
- ActivityInfo activityInfo=pm.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
- String value=activityInfo.metaData.getString("name");
- int mode=activityInfo.launchMode;
四.开发一个应用程序管理器
打开手机“设置——>应用程序管理”进入的界面,列出当前设备已安装的Application,在上面介绍获取所有Application,获取Application Logo以及Application Label的方法,在布局界面添加一个ListView展示应用程序信息,这样一个简单的应用程序管理器初级界面就完成了,添加对应的OnItemClickListener接口后,方便对应Application进行“停止”和“卸载”操作。
五.开发Application自动更新功能
自动更新功能的原理:通过比较已安装应用程序的versionName和推送应用程序的versionName是否不同,如果推送的versionName是高版本(新版本),开启后台线程下载新版本,通常检测网络环境是否处于wifi状态后执行下载,下载完成在个人中心“检查更新”栏目出现多点,同时启动应用程序,弹出更新提示框(应该叫弹出安装提示框更差当),点击“更新”完成安装,比如:新浪新闻,网易新闻,提示更新时已下载好安装包到本地。
你可能感兴趣的文章
转载请注明出处: https://www.teachcourse.cn/1818.html ,谢谢支持!