• Android开发之PackageManager类


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

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

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

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

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

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

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

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

     1     public static List< AppInfo > getAppInfo(Context context) {
     2         List< AppInfo > appInfos = new ArrayList<>();
     3 
     4         PackageManager pm = context.getPackageManager();
     5 
     6         List< PackageInfo > packageInfos = pm.getInstalledPackages(0);  //获取所有安装到手机上的app
     7 
     8         for ( PackageInfo packageInfo : packageInfos ) {
     9             AppInfo appInfo = new AppInfo();
    10             String packageName = packageInfo.packageName;               //获取到app的包名
    11             appInfo.setPackageName(packageName);
    12 
    13             Drawable icon = packageInfo.applicationInfo.loadIcon(pm);     //获取到app的图标
    14             appInfo.setIcon(icon);
    15 
    16             String name = packageInfo.applicationInfo.loadLabel(pm).toString();    //获取到app的名称
    17             appInfo.setName(name);
    18 
    19             int flags = packageInfo.applicationInfo.flags;
    20             //判断是否是用户安装的应用
    21             if ( (flags & ApplicationInfo.FLAG_SYSTEM) == 0 ) {                  //判断app是否是系统应用
    22                 appInfo.setUserApp(true);
    23             } else {
    24                 appInfo.setUserApp(false);
    25             }
    26             //判断是否安装到了内存还是SD
    27             if ( (flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == 0 ) {         //判断app是否是否安装到sd卡
    28                 appInfo.setInRom(true);
    29             } else {
    30                 appInfo.setInRom(false);
    31             }
    32 
    33             appInfos.add(appInfo);
    34         }
    35         36         return appInfos;
    37     }
  • 相关阅读:
    什么是遍历?
    jQuery 尺寸 方法
    jQuery 操作 CSS
    删除元素/内容
    通过 after() 和 before() 方法添加若干新元素
    通过 append() 和 prepend() 方法添加若干新元素
    四个 jQuery 方法:
    设置内容
    jQuery 属性选择器
    jQuery 元素选择器
  • 原文地址:https://www.cnblogs.com/liyiran/p/4657168.html
Copyright © 2020-2023  润新知