PackageManger,可以获取到手机上所有的App,并可以获取到每个App中清单文件的所有内容。

设置应用程序版本号
在应用程序的manifest文件中定义应用程序版本信息.
2个必须同时定义的属性:
android:versionCode — 整型, 相对于其他种类的版本号而言, 表示应用程序代码的版本. 其值是个整型,因此其他应用程序可以在程序编码中判断它, 例如检查升级或降级关系. 可以对其设置任何值, 然而应当确保每一个后续发布的应用程序使用更大的值. 尽管系统并不强制执行这种规则, 但是每个后续版本使用增加的数字值是标准作法. 典型做法是, 你发布的第一个版本的versionCode为1, 然后以后的每个发布版本单调递增, 而不管这个发布版本是否是一个主要或者次要的发布版本. 这表示 android:versionCode 值没有必要与用户可见的应用程序发布版本号有特别的相似之处. 同时,应用程序和发布平台不应将此版本值呈现给用户.

android:versionName --- 字符串值,向用户显示的应用程序代码的发布版本号. 此值是一个字符串, 因此可以用<major>.<minor>.<point>的形式描述应用程序版本, 或者以任何其他类型的绝对或相对版本号标识的形式. 相对于 android:versionCode, 除了让应用程序向用户显示它以外, 系统不打算将这个值用于任何内部使用目的. 应用发布平台可能会将 android:versionName 值解析出来显示给用户. 在manifest文件的<manifest>元素中同时定义这些个版本相关属性.

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.package.name"
android:versionCode="2"
android:versionName="1.1">
<application android:icon="@drawable/icon" android:label="@string/app_name">
...
</application>
</manifest>

在例子中, 注意 android:versionCode 值显示当前的.apk包含了应用程序代码的第二个发布, android:versionName字符串表现的是一个小的后继发布版本.

Android 提供了一个API以让应用程序向系统查询版本信息. 使用 PackageManager 的 getPackageInfo(java.lang.String, int)方法.例如:
 PackageManager manager= getPackageManager();
try {
PackageInfo info = manager.getPackageInfo(getPackageName(), 0);
appVersionCode = info.versionCode;
appVersionName = info.versionName;
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

---------------------------------------------------------------------

通过PackageManger对象,可以获取到安装到手机上的所有app的信息,包括图标,应用名称,应用包名,应用安装位置,应用是否是系统级的,应用大小等信息

     public static List< AppInfo > getAppInfo(Context context) {
List< AppInfo > appInfos = new ArrayList<>(); PackageManager pm = context.getPackageManager(); List< PackageInfo > packageInfos = pm.getInstalledPackages(0); //获取所有安装到手机上的app for ( PackageInfo packageInfo : packageInfos ) {
AppInfo appInfo = new AppInfo();
String packageName = packageInfo.packageName; //获取到app的包名
appInfo.setPackageName(packageName); Drawable icon = packageInfo.applicationInfo.loadIcon(pm); //获取到app的图标
appInfo.setIcon(icon); String name = packageInfo.applicationInfo.loadLabel(pm).toString(); //获取到app的名称
appInfo.setName(name); int flags = packageInfo.applicationInfo.flags;
//判断是否是用户安装的应用
if ( (flags & ApplicationInfo.FLAG_SYSTEM) == 0 ) { //判断app是否是系统应用
appInfo.setUserApp(true);
} else {
appInfo.setUserApp(false);
}
//判断是否安装到了内存还是SD
if ( (flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == 0 ) { //判断app是否是否安装到sd卡
appInfo.setInRom(true);
} else {
appInfo.setInRom(false);
} appInfos.add(appInfo);
}
return appInfos;
}

最新文章

  1. 【接口】【USB】1.学习笔记
  2. your local repository contains non-ascii
  3. java word文档 转 html文件
  4. Android坐标系统
  5. ASP.NET MVC4+EasyUI+EntityFrameWork5权限管理系统——菜单模块的实现(二)
  6. AndroidStudio用微信官方方法接入微信分享功能
  7. 分享一些Comet开发经验
  8. WebApp遇到的一些坑
  9. 关闭 sqlserver提示信息
  10. php获取本周周一、周日时间,上周周一、周日时间,本月第一天,本月最后一天,上个月第一天,最后一天时间
  11. DEV下拉框LookUpEdit使用技巧
  12. 【20171027中】alert(1) to win 第13,14,15,16题
  13. 基于esp8266的智能台灯DIY
  14. [BZOJ1001] [Beijing2006] 狼抓兔子 (最短路)
  15. js 人民币小写金额转换为大写
  16. 数据结构之二叉搜索树、AVL自平衡树
  17. Oracle的安装与配置
  18. OSG-漫游
  19. Selenium(Python) ddt读取CSV文件数据驱动
  20. 【Linux】查询文件中指定字符串的记录

热门文章

  1. IOS 高级开发 KVC(二)
  2. Objective-C 【继承、变量修饰符(私有变量/方法)、description方法】
  3. wait(...) notify() notifyAll()
  4. OpenJudge 2774 木材加工
  5. ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused
  6. Qt-获取主机网络信息之QHostInfo
  7. 使用jQuery.FileUpload插件和Backload组件裁剪上传图片
  8. AngularJS(2)-Scope作用域和控制器
  9. 51nod1240莫比乌斯函数
  10. CentOS 最小化安装后安装桌面