Android——RuntimePermission介绍
2016-07-16 19:45
369 查看
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;
添加一个跳转的Activity去请求响应的permission,这样改动的好处就是你以前代码的处理逻辑可以不用修改;
直接在用的地方添加请求的permission。
通过shareUID的方式获取与其UID相同的application的权限。后一种方式通常使用多个apk需要运行在同一个application中的情况;
5、下面来说说android自动授权的情况,即对内置应用,android采用了什么方式来授权的;
android授权是当第一次开机,或者创建一个新的用户的时候,即开始自动授权;满足以下两种情况之一即可自动授权:
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有一丝的帮助。
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;
添加一个跳转的Activity去请求响应的permission,这样改动的好处就是你以前代码的处理逻辑可以不用修改;
直接在用的地方添加请求的permission。
通过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有一丝的帮助。
相关文章推荐
- android权限大全[from:曲怀觞]
- Android M中需要Runtime申请的权限
- Android的所有权限说明
- Android中的权限机制
- SDK23 读取联系人 权限拒绝
- Android之权限检查(解决未获取用户权限允许)
- android(安卓)cocos2d-x关于防止游戏中锁屏问题
- Android权限大全
- Android访问权限大全
- Android6.0------权限申请~easypermissions
- Android6.0------权限申请RxPermissions
- Android6.0------权限申请管理(单个权限和多个权限申请)
- Android6.0------权限管理
- android安全机制——权限
- 定位、读取手机状态等权限在6.0系统不管用
- 读取本地文件的权限问题
- Android开发之6.0动态权限管理
- Android权限大全
- Android之从特定目录读取和写入数据