Android——RuntimePermission介绍

2023-05-16

1、介绍
androidM版本上,对permission的管理做了部分改动,针对dangerous permission,不在安装的时候给予权限,而是在运行过程中咨询用户是否给予app响应的权限,这叫runtime Permission model。其他的normal的权限还是在安装的时候授予权限;注意:只是针对dangerous permission,其他类型的permission,例如:normal或者signatureOrSystem,仍然在安装的时候给与授权;

2、dangerous的权限是按组来呈现给用户的,一共有9组权限,一般是以组的形式给予授权的,下面我来列出这9种权限来:
- PHONE_PERMISSIONS
- CONTACTS_PERMISSIONS
- LOCATION_PERMISSIONS
- CALENDAR_PERMISSIONS
- SMS_PERMISSIONS
- MICROPHONE_PERMISSIONS
- CAMERA_PERMISSIONS
- SENSORS_PERMISSIONS
- STORAGE_PERMISSIONS

3、关于权限申请的时候弹出的对话框的位置:
在PackageInstaller(软件安装程序),具体的弹对权限的对话框在这个应用中。如果要修改的话,一般都去修改这个模块;

4、在AndroidM上怎么申请runtimePermission,你App的应用的版本号要大于等于23;

  1. 添加一个跳转的Activity去请求响应的permission,这样改动的好处就是你以前代码的处理逻辑可以不用修改;
  2. 直接在用的地方添加请求的permission。
  3. 通过shareUID的方式获取与其UID相同的application的权限。后一种方式通常使用多个apk需要运行在同一个application中的情况;

5、下面来说说android自动授权的情况,即对内置应用,android采用了什么方式来授权的;
android授权是当第一次开机,或者创建一个新的用户的时候,即开始自动授权;满足以下两种情况之一即可自动授权:

   - UID<FIRST_APPLICATION_UID(10000)
  即uid小于android的第一个app的uid。像系统的uid,root的uid,phone的uid都是小于10000的;
   - 必须同时满足以下三种情况
          1. apk设置了PRIVATE_FLAG_PRIVILEGED的标志,
       即:在Android.mk文件中配置了
       LOCAL_PRIVILEGED_MODULE := true
          2. apk设置了FLAG_PERSISTENT的标志;
      即:android:persistent="true"        
          3. 并且与系统签名一直,platform的签名;
 目前满足上述条件的只有SystemUI这个模块;

6、其他系统app,比如系统的App会给默认的App设置默认的权限的:
举例:打电话默认授予的权限有:
PHONE_PERMISSONS
CONTACTS_PERMISSIONS
SMS_PERMISSIONS
MICROPHONE_PERMISSIONS
其他的比如联系人,浏览器,照相机,等等都有默认授权,大家感兴趣的话可以自己阅读source code,类DefaultPermissionGrantPolicy.java
路径:frameworks/base/services/core/java/com/android/pm/DefaultPermissoinGrantPolicy.java

这就是大致androidM的runtimePermission,关于具体代码如何申请权限,以及选择后如果回调,这个大家可以自行百度,这里我就不再赘述了。针对上面的内容,希望对大家理解AndroidM的runtimePermission有一丝的帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android——RuntimePermission介绍 的相关文章

随机推荐