Android运行时权限--快速应用

最近需要实现一个相机的小需求,涉及到了动态获取权限的内容。然而这部分我一直不怎么清晰,借着这个机会理清一下思路。先用起来再说。

在Android6.0之后,如果应用程序要进行一些需要危险权限的操作,需要在运行时动态地通过代码申请权限。关于这些理论网络上的前辈们已经写过很多了,这里明确一下流程:

首先应该明确:并不是所有的权限都需要动态申请,只有权限等级为“危险(dangerous)”的才需要。涉及危险的权限见下图

需要指出的是,如果应用程序已经获得了某一组(group)中的某一个权限,那么这一组的权限都会被获取。另外无论应用涉及到哪些权限,都应该在Manifest文件中注册。

动态获取权限的过程应该是这样的:

先来看一下代码的组织:

步骤:

1.调用ContextCompat.checkSelfPermission(context,要申请的权限名)。使用该方法先检查你是否已经注册和获得了这个权限。

2.大多数情况下(比如应用第一次运行时),是没有获得权限的,所以才需要我们申请。调用

ActivityCompat.requestPermissions(context,一个存有需要权限的String数组,int常量值作为返回码);【返回码接下来会说】

3.其实到这里申请的部分就已经完成了。但是有时不知你会不会遇到这种情况:打开应用,看到权限请求,请求下方还有一个小勾选框:“不再提示”。如果用户在过去拒绝了权限请求,并在权限请求系统对话框中选择了 “不再提示” 选项,此方法将返回 false。这个方法给了开发人员解释和操作的空间:在询问时可以解释权限的用途;如果权限被拒绝了,也可以提示用户如果需要的话可以手动从设置里开启权限。

4.onRequestPermissionsResult(int返回码,  String[] permissions, int[] grantResults)处理权限申请回调的方法。参数里有两个数组,int数组对应string数组,也就是“权限数组”,表示权限的申请结果。与其他的返回码一样,这里的requestCode就是一个标识,用于标记一次申请操作。

举个例子:

可以在onRequestPermissionsResult方法中,一个requestCode对应一个case,有利于分别处理不同申请的操作。

Android运行时权限的快速应用就是这样,其实还可以对这些权限方法进行封装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值