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
Android下得到已安装Application信息的更多相关文章
- <转> win7下破解已安装的VS2008
http://renfan.blog.51cto.com/3466724/754301 在win7系统下,已安装的VS2008维护界面是不显示序列号输入的,需要按以下步骤进行才能破解 1.点击“卸载/ ...
- ubuntu查看已安装软件包信息的方法
ubuntu查看已安装软件包信息的方法原创fang141x 最后发布于2019-04-15 10:41:34 阅读数 2802 收藏展开简介ubuntu下面是使用dpkg来管理和安装软件包的,对应ce ...
- Android 下得到 未安装APK包含信息 等
很多情况下,我们需要通过APK文件来得到它的一些信息. (此时此APK不一定被安装了) 0. 基础知识:可以通过android.content.Context的方法 getPackageManager ...
- Android手机出现"已安装了存在签名冲突的同名数据包"的原因及解决办法
http://blog.csdn.net/dyllove98/article/details/8830264 如果你不是开发者:如果你在android上更新一个已经安装过较早版本软件时,安装到最后一步 ...
- Android中对已安装应用的管理实现
获取.管理手机中已安装的所有应用信息 1.创建应用的实体类AppInfo,属性有应用的名称.包名.图标.第一次安装时间和版本名称 public class AppInfo { private Stri ...
- Ubuntu 下查看已安装的软件
Ubuntu 下如何查看已安装的软件 1.查看安装的所有软件 dpkg -l 例如: dpkg -l | grep ftp 2.查看软件安装的路径 dpkg -L | grep ftp 也可以用 wh ...
- Mac下查看已安装的jdk版本及其安装目录
1.打开终端,输入:/usr/libexec/java_home -V 注意:输入命令参数区分大小写(-v是不对的,必须是-V) 2.如图:为输入命令: 当前Mac已安装jdk目录: Mac默认使用的 ...
- [android]android下apk的安装过程
/********************2016年4月23日更新********************************/ 知乎:有什么apk分析工具? 拿到了一个apk文件,怀疑不安全,在 ...
- linux下查看已安装的软件与卸载
转自:https://blog.csdn.net/qq_22075041/article/details/78855849 因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否 ...
随机推荐
- poj 1924 Paths on a Grid(组合数学)
题目:http://poj.org/problem?id=1942 题意:给定一个矩形网格的长m和高n,其中m和n都是unsigned int32类型,一格代表一个单位,就是一步,求从左下角到右上角有 ...
- Innodb MVCC源码实现
1. 概述 MVCC: 即多版本一致性,在事务模型下,使用version控制数据版本,关系型数据库基本都实现了MVCC,以对表数据的读写互不阻塞,增大了并发量. Oracle和MySQL数据库都是使用 ...
- 什么是Code Review(转)
Code Review是一种通过复查代码提高代码质量的过程,在XP方法中占有极为重要的地位,也已经成为软件工程中一个不可缺少的环节.本文通过对Code Review的一些概念和经验的探讨,就如何进行C ...
- Linux kernel Makefile for ctags
/********************************************************************** * Linux kernel Makefile for ...
- WEB架构师成长之路-架构师都要懂哪些知识 转
Web架构师究竟都要学些什么?具备哪些能力呢?先网上查查架构师的大概的定义,参见架构师修炼之道这篇文章,写的还不错,再查查公司招聘Web架构师的要求. 总结起来大概有下面几点技能要求: 一. 架构师有 ...
- c语言宏定义#define的理解与资料整理
1. 利用define来定义 数值宏常量 #define 宏定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎.它可以出现在代码的任何地方,从本行宏定义开始,以后的代码就就都认 ...
- 白话spring依赖注入
Spring能有效地组织J2EE应用各层的对象.Action?Service?DAO?,都可在Spring的管理下有机地协调.运行.Spring将各层的对象以松耦合的方式组织在一起,对象与对象之间没有 ...
- android捕获ListView中每个item点击事件
转自:http://www.cnblogs.com/pswzone/archive/2012/03/10/2389275.html package com.wps.android; import ...
- 玩一个:可以显示任何xml树结构的xaml定义
学习中, 玩一玩. 效果如下.Xaml随后. <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentatio ...
- 设计模式_Memento_备忘录模式
形象例子: 同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话,不然MM发现了会不高兴的哦,幸亏我有个备忘录,刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存,这样可以随时察看以前的记录啦 ...