一、PMS的常用功能
- 1、安装、卸载应用
- 2、查询permission相关信息
- 3、查询Application相关信息(application、activity、receiver、service、provider及相应属性等)
- 4、查询已安装应用
- 5、增加、删除permission
- 6、清除用户数据、缓存、代码等
二、接口的讲解
1.PackaeManager.java ----------------------> ApplicationPackageManager.java------------------------------->PackageManagerService.java
queryIntentActivities(intent, PackageManager.MATCH_ALL); : 查询包含这个Intent的Activity
resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) : 查询是否有满足这个Intent的Activity
clearPackagePreferredActivities() : 清除默认的修改
addPreferredActivity() : 修改默认的配置
if (r.match > bestMatch) bestMatch = r.match;
replacePreferredActivity() : 替换Intent 匹配相同的Activity
getPackageUid(String packageName) : 获取相应包的UID
getPermissionInfo(String packageName, int flags (大部分默认为0)) : 通过包名获取权限
getApplicationInfo(String packageName,int flags) : 检索出一个应用程序的所有信息
getActivityInfo(
ComponentName component,int flags
) : 检索出一个特定的Activity类的所有信息
getPackageInfo(String packageName, int flags) : 包名获取该包名对应的应用程序的PackageInfo对象
getInstalledPackages
(int flags(一般传值为0)) : 返回设备上所有已经安装的应用程序集合
GET_ACTIVITIES :(packageInfo的标志)表示 返回包(packageInfo)中包含的所有Activity信息
GET_GIDS :(packageInfo的标志)表示 返回关联的GID(groupId)
GET_CONFIGURATIONS :(packageInfo的标志)表示 配置选项信息
GET_INSTRUMENTATION :(PackageInfo的标志)表示 是否使用了instrumentation
GET_PERMISSIONS :(PackageInfo的标志)表示 是否使用了permissions
GET_PROVIDERS :(PackageInfo的标志)表示 是否使用了providers
GET_RECEIVERS :(PackageInfo的标志)表示 是否使用了recevier
GET_SERVICES :(PackageInfo的标志)表示 是否使用了service
GET_SIGNATURES :(PackageInf的标志) 表示是否使用包的签名信息
GET_UNINSTALLED_PACKAGES:参数标志位,表示检索出所有有数据的目录的应用程序(主要是卸载的)的信息