在上一篇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

Android下得到已安装Application信息的更多相关文章

  1. <转> win7下破解已安装的VS2008

    http://renfan.blog.51cto.com/3466724/754301 在win7系统下,已安装的VS2008维护界面是不显示序列号输入的,需要按以下步骤进行才能破解 1.点击“卸载/ ...

  2. ubuntu查看已安装软件包信息的方法

    ubuntu查看已安装软件包信息的方法原创fang141x 最后发布于2019-04-15 10:41:34 阅读数 2802 收藏展开简介ubuntu下面是使用dpkg来管理和安装软件包的,对应ce ...

  3. Android 下得到 未安装APK包含信息 等

    很多情况下,我们需要通过APK文件来得到它的一些信息. (此时此APK不一定被安装了) 0. 基础知识:可以通过android.content.Context的方法 getPackageManager ...

  4. Android手机出现"已安装了存在签名冲突的同名数据包"的原因及解决办法

    http://blog.csdn.net/dyllove98/article/details/8830264 如果你不是开发者:如果你在android上更新一个已经安装过较早版本软件时,安装到最后一步 ...

  5. Android中对已安装应用的管理实现

    获取.管理手机中已安装的所有应用信息 1.创建应用的实体类AppInfo,属性有应用的名称.包名.图标.第一次安装时间和版本名称 public class AppInfo { private Stri ...

  6. Ubuntu 下查看已安装的软件

    Ubuntu 下如何查看已安装的软件 1.查看安装的所有软件 dpkg -l 例如: dpkg -l | grep ftp 2.查看软件安装的路径 dpkg -L | grep ftp 也可以用 wh ...

  7. Mac下查看已安装的jdk版本及其安装目录

    1.打开终端,输入:/usr/libexec/java_home -V 注意:输入命令参数区分大小写(-v是不对的,必须是-V) 2.如图:为输入命令: 当前Mac已安装jdk目录: Mac默认使用的 ...

  8. [android]android下apk的安装过程

    /********************2016年4月23日更新********************************/ 知乎:有什么apk分析工具? 拿到了一个apk文件,怀疑不安全,在 ...

  9. linux下查看已安装的软件与卸载

    转自:https://blog.csdn.net/qq_22075041/article/details/78855849 因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否 ...

随机推荐

  1. 最小生成树(kruskal模版 模板)

    题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2144&cid=1186 #include<stdio.h> #incl ...

  2. bzoj4009

    这是一道神题,首先我们不难先到整体二分吧 下面的问题就是,求出对于每个水果,有多少盘子是他的子路径 直接考虑不是很容易,我们换个思路,考虑对于每个盘子,哪些水果能包含它 我们假设盘子a,b,dep[a ...

  3. bzoj3203

    好题,我们先来考虑第i关,要能打死所有僵尸的攻击力得要满足什么条件我们设排头的是第i个僵尸,植物这关攻击力为yi不难得到对于第j个僵尸,植物开始打到他时,他离房子的距离为xi+(i-j)*d-(sum ...

  4. 逆序对的相关问题:bzoj1831,bzoj2431

    先从简单一点的bzoj2431入手: n个数1~n已经限定了,所以 对于1~i-1,新加入i,最多可以增加i-1个逆序对,最少增加0个逆序对 f[i,j]表示1~i形成的序列逆序对为j的方案数 比较容 ...

  5. c# 产生随机字符串,包括大小写字母和数字

    #region MyRegion //產生密碼 protected static string GetPwd() { return CreateRandomNum123(2) + CreateRand ...

  6. ZJOI2010网络扩容

    无限orz hzwer神牛…… 第一问很简单,按数据建图,然后一遍最大流算法即可.     第二问则需要用最小费用最大流算法,主要是建图,那么可以从第一问的残留网络上继续建图,对残留网络上的每一条边建 ...

  7. I.MX6 bq27441 driver hacking

    /************************************************************************* * I.MX6 bq27441 driver ha ...

  8. Hrbust 2240 土豪的时代

    题意:中文题……不总结了……(好懒0-0) 土豪圈有一个习惯:从来不告诉别人自己到底有多少钱.但他们总是喜欢和其他土豪比较,来看看谁更土豪.于是每每几天,就会爆出一些关于土豪资产的消息,比如A土豪比B ...

  9. 【工具类】如何通过代码安装一个apk文件

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  10. myeclipse10 安装 testng插件

    下载插件: http://pan.baidu.com/s/1c0pghFE 放到dropins目录