• Android下得到已安装Application信息


    在上一篇blog中,谈到如何利用APK archive文件得到相应信息。(当时发现例如ProcessName,DataDir等信息,其实是无法得到的).
    当前咱们看看如何通过系统取得已经安装的Application的相关信息。


    0.基础知识:
    PackageManager class有一个方法:
    public abstract ApplicationInfo getApplicationInfo (String packageName, int flags)
    它向系统查询包名为:PackageName(参数一)的Application信息。注意,与之前 getPackageArchiveInfo()是通过APK Archive文件中main.xml得到信息不通,getApplicationInfo()是向系统查选,所以如果此Application没有被安装,则会返回异常:PackageManager.NameNotFoundException。


    packageName可以通过APK文件得到。


    1. 得到Application相关信息:
    try {
    ApplicationInfo AI = PM.getApplicationInfo(PI.packageName, PackageManager.GET_META_DATA | PackageManager.GET_SHARED_LIBRARY_FILES);


    //dataDir: 分配给此Application的存放数据的位置。通常是:/data/data/packageName/
    Log.w("3DiJoy", "Appliction DataDir:" + AI.dataDir);

    //SourceDir: 安装这个包后的存放位置。 因为APK安装后,会讲archive文件存放在某个目录(一般程序和//root程序位置不同)。 作为读取资源是的位置。此位置通常在/data/app/pakcageName.apk
    Log.w("3DiJoy", "Application SourceDir:" + AI.sourceDir);

    // Application Name: 此处是从main.xml中得到。如果没有,则为空
    Log.w("3DiJoy", "Application Name:" + AI.name);

    // 也是从main.xml中得到。
    Log.w("3DiJoy", String.format("minSDK Version: [%d]", AI.targetSdkVersion));

    //processName. 此Application 运行时的ProcessName. 如果main.xml中有"process" attribute。则为这个值
    //如果没有,则与PackageName相同
    Log.w("3DiJoy", "Application in porcessName is :" + AI.processName);

    //PackageName: 此Application所在的PckageName。
    Log.w("3DiJoy", "Application in Package " + AI.packageName);
    } catch (NameNotFoundException e) {
    // TODO Auto-generated catch block
    Log.e("3DiJoy", "This Package not installed");
    e.printStackTrace();
    }


    注意:这里肯定能够得到ProcessName。


    2. 得到Package信息:
    上面只得到了Application系列信息,Package系列信息并为得到,则可以这样处理:
    PackageManager有个方法:
    public abstract PackageInfo getPackageInfo (String packageName, int flags)
    它向系统查询包名为:PackageName(参数一)的PackageInfo信息。
    注意,只有已经安装的Package,才能正常得到信息。否则发生异常。PackageManager.NameNotFoundException。

    因为返回值为PackageInfo。 所以取值与上一blog类似。就不详谈了。

    http://blog.sina.com.cn/s/blog_602f877001017qm2.html

  • 相关阅读:
    Ext.Net学习笔记12:Ext.Net GridPanel Filter用法
    Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法
    Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法
    Ext.Net学习笔记11:Ext.Net GridPanel的用法
    Ext.Net学习笔记09:Ext.Net Store的用法
    Ext.Net学习笔记10:Ext.Net ComboBox用法
    Ext.Net学习笔记08:Ext.Net中使用数据
    Ext.Net学习笔记07:Ext.Net DirectMethods用法详解
    Ext.Net学习笔记06:Ext.Net DirectEvents用方补充
    Ext.Net学习笔记04:Ext.Net布局
  • 原文地址:https://www.cnblogs.com/eustoma/p/4059587.html
Copyright © 2020-2023  润新知