Android之系统权限涉及的部分XML文件

1、 packages.xml

        存在 /data/system/文件夹下,记录了系统中所有安装的应用信息,包括基本信息、签名和权限等信息。当系统中的APK安装、删除、升级时,文件就会被更新。当运行时权限选择授权时也会做权限的更新

packages.xml文件中主要的信息分为下面几个部分:

  • permission块: 里面包含了系统中所有定义的权限的信息
  • package块:里面包含了系统中所有安装的app的详细信息
  • shared-user块:里面包含了所有系统定义的shareuser的信息
  • keyset-settings块:里面包含了已安装app签名的public key信息

PackageManagerService调用Settings.java来做权限更新与持久化。

2、packages-backup.xml

        听名字就知道,它是上一个文件的备份,存在 /data/system/文件夹下,同样记录了系统中所有安装的应用信息,包括基本信息、签名和权限等信息。当系统中的APK安装、删除、升级时,文件就会被更新。当运行时权限选择授权时也会做权限的更新

3、default-permission.xml

       default-permissions.xml存在/system/etc/default-permissions/文件夹下。Android开机后,除了根据上次开机的记录(runtime-permissions.xml)授予运行时权限外,一些系统重要的组件也需要提前授予运行时权限,最常见的时为系统重要功能的默认组件提前授予运行时权限,例如系统会为默认的浏览器提前授予位置相关的运行时权限。

    提前授权的步骤分三步:

  • 系统特权组件授权;
  • 系统默认组件授权;
  • 特定文件指定授权。

default-permission.xml 中的fixed表示授权后是否可以被非系统组件修改权限

//DefaultPermissionGrantPolicy.java负责默认权限授予工作
public void grantDefaultPermissions(int userId) {
    DelayingPackageManagerCache pm = new DelayingPackageManagerCache();

    grantPermissionsToSysComponentsAndPrivApps(pm, userId);
    grantDefaultSystemHandlerPermissions(pm, userId);
    grantDefaultPermissionExceptions(pm, userId);

    // Apply delayed state
    pm.apply();
}

4、 runtime-permission.xml

       runtime-permission.xml存在/data/misc_de/0/apexdata/com.android.permission/文件夹下,会记录APP运行时所有的权限配置,运行时权限含有危险权限,此类权限授予应用对受限数据的额外访问权限,或允许应用执行对系统和其他应用具有更严重影响的受限操作。因此,需要先在应用中请求运行时权限,然后才能访问受限数据或执行受限操作。请勿假定这些权限之前已经授予过,务必仔细检查,并根据需要在每次访问之前请求这些权限。系统会为某些运行时权限分配 dangerous 保护级别。
       底层是通过RuntimePermissionsPersistenceImpl调用Settings来实现运行时权限授权更新的。

5、appops.xml

       通过AppOpsService来做权限持久化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值