PackageManger管理类

2018-08-05  本文已影响0人  dev晴天

它的主要职责是管理应用程序包。 通过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

image.png
 // 获得 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

上一篇下一篇

猜你喜欢

热点阅读