简化开发

Android之获取packageinfo相关

2021-01-10  本文已影响0人  Lee_5566
image.png

根据PackageInfo对象获取APP信息

PackageInfo类包含AndroidManifest.xml文件的信息。

常用字段 含义
String packageName 包名
ActivityInfo[] activities 所有<activity>节点信息
ApplicationInfo applicationInfo <application>节点信息,只有一个
ActivityInfo[] receivers 所有<receiver>节点信息,多个
ServiceInfo[] services 所有<service>节点信息 ,多个

获取APP信息方式:

ApplicationInfo applicationInfo = packageInfo.applicationInfo;
// APP 包名
String packageName = packageInfo.packageName;
// APP icon
Drawable icon = packageManager.getApplicationIcon(applicationInfo);
// APP 名称
String appName = packageManager.getApplicationLabel(applicationInfo).toString();
// APP 权限
String[] permissions = packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS).requestedPermissions;

ApplicationInfo类

ApplicationInfo是android.content.pm包下的一个实体类,用于封装应用的信息,flags是其中的一个成员变量public int flags = 0;用于保存应用的标志信息。

ApplicationInfo 可以得到一个应用基本信息。这些信息是从AndroidManifest.xml的< application >标签获取的

ApplicationInfo对象里保存的信息都是<application>标签里的属性值

ApplicationInfo与ResolveInfo比较:前者能够得到Icon、Label、meta-data、description。后者只能得到Icon、Label

字段说明 含义
flags字段 -
FLAG_SYSTEM 系统应用程序
FLAG_EXTERNAL_STORAGE 表示该应用安装在sdcard中
获取手机上安装所有程序对应的 ApplicationInfo
/**
* 获取手机上安装的所有的程序对应的 ApplicationInfo
* 它是通过解析AndroidManifest.xml的< application>标签中得到的,所以它能得到所有的app
*
* 获取手机上的所有的安装的应用程序信息
*  参数为 标识   一般为 PackageManager.GET_UNINSTALLED_PACKAGES
*/
List<ApplicationInfo> list = packageManager.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
获取指定包名对应的 ApplicationInfo
 /**
* 获取指定应用程序  ApplicationInfo
*  参数一对应应用程序的包名
*  参数二 应用程序对应的标识  通常为 0
*/
ApplicationInfo applicationInfo = 
packageManager.getApplicationInfo("com.androidlongs.contactsapplication", 0);

ResolveInfo类

ResolveInfo这个类是通过解析一个与IntentFilter相对应的intent得到的信息。它部分地对应于从AndroidManifest.xml的< intent>标签收集到的信息。

常用字段 含义
ActivityInfo activityInfo 获取 ActivityInfo对象,即<activity>或<receiver>节点信息
ServiceInfo serviceInfo 获取 ServiceInfo对象,即<service>节点信息

根据ResolveInfo对象获取APP信息:

// APP包名
resolve.activityInfo.packageName;
// APP icon
resolve.loadIcon(packageManager);
// APP名称
resolve.loadLabel(packageManager).toString();
上一篇 下一篇

猜你喜欢

热点阅读