它的主要职责是管理应用程序包。 通过PackageManager,我们就可以获取应用程序信息。
PackageManager获取的信息即来自AndroidManifest.XML文件中
一、PackageManager的功能:
1、安装,卸载应用
2、查询permission相关信息
3、查询Application相关信息(application,activity,receiver,service,provider及相应属性等)
4、查询已安装应用
5、增加,删除permission
6、清除用户数据、缓存,代码段等
获得方式:
public abstract PackageManager getPackageManager()
功能:获得一个PackageManger对象
PackageManager的常见方法:
public abstract Drawable getApplicationIcon(String packageName)
参数: packageName 包名
功能:返回给定包名的图标,否则返回null
public abstract ApplicationInfo getApplicationInfo(String packageName, int flags)
参数:
packagename 包名
flags 该ApplicationInfo是此flags标记,通常可以直接赋予常数0即可
功能:返回该ApplicationInfo对象
public abstract List<ApplicationInfo> getInstalledApplications(int flags)
参数:
flag为一般为GET_UNINSTALLED_PACKAGES,那么此时会返回所有ApplicationInfo。我们可以对ApplicationInfo
的flags过滤,得到我们需要的。
功能:返回给定条件的所有PackageInfo
public abstract List<PackageInfo> getInstalledPackages(int flags)
参数如上
功能:返回给定条件的所有PackageInfo
// 获得 packageManager
PackageManager pm = getPackageManager();
try {
PackageInfo pi = pm.getPackageInfo(getPackageName(),0);
// packageInfo 里面有applicationinfo 在里面有activityInfo(四大组件信息)
Log.i("1234", "onCreate: ");
/*packageInfo 提供了包相关的信息封装在build.gradle中
*
*packageInfo 封装了api可以获得 applicationInfo activityInfo
*
* packageInfo里面主要封装了 版本名 版本号 签名信息等等
* */
/*思路: 获得信息时 先看看信息在那个节点下
application 节点下的信息通过applicationInfo获得
activity节点下的信息 通过activityInfo 获得
*/
//安装的应用的信息通过pm提供的api获得
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
参考:https://www.cnblogs.com/travellife/p/3932823.html
https://blog.csdn.net/working_harder/article/details/52250092
网友评论