Android权限管理

问题背景:Android权限管理分为6.0以上和以下。其中6.0以下的权限管理有很多的坑,为了兼容6.0,我们需要对5.0的权限进行对应的处理。

5.0的权限机制
5.0的权限无论你怎么获取都是已经授权,因为6.0以下的权限只要你在manifest文件中进行申明就是允许
5.0不需要进行授权判断,直接使用摄像头、麦克风等需要权限的接口代码,判断
Build.VERSION.SDK_INT < 23时直接使用需要的功能。

但是需要注意的是,5.0的系统不同的机器可能有不同的系统权限管理的应用,如权限管理、king权限管理工具。这些第三方应用会对我们的权限进行管理,他们会弹出系统的dialog提醒用户是否允许该权限。
1、始终询问:允许或者拒绝的有效时间为该进程的一个生命周期,结束该进程第二次进入的时候还是会弹出权限询问框,除非我们点击记住勾选框。
2、允许:一次允许,终生使用,除非我们在第三方的权限管理应用中进行更改
3、拒绝:直接拒绝,不会弹出询问的提示框提示。

我们在使用需要权限的接口的时候,默认是始终询问,当第一次使用摄像头的时候第三方应用会检测到我们需要权限,然后弹出对话框询问,当我们点击允许并且勾选记住,那么以后就可以正常使用该权限,当点击拒绝并且勾选的时候,以后都不能正常使用该功能,并且第三方应用不会再弹出询问的对话框。
我们在开发中会遇到两个问题
第一:当用户第一次使用权限的时候,比如语音录制,第三方弹出对话框,这个时候我们的语音到底有没有在录制,这个录制是否有效
第二:当用户永久拒绝的时候,我们如何提醒用户权限已经被拒绝,保持和6.0的一致交互。

有些权限如拍照,在弹出第三方的对话框的时候并不影响,当点击允许的时候照样能够进入拍摄,但是录音就不同了,第三方的对话框会将录音阻塞。这个时候我们需要对录音进行try catch,抓取到异常,然后提示用户录音时间太短,微信采用的也是这个机制。
当用于永久禁止权限的时候,我们可以获取录音的时间长短,当录音的时长为0的时候弹出对话框提醒用户需要去开启权限。

6.0
6.0以上的权限有接口对权限进行判断,然后有点击允许还是失败的回调接口,我们可以在对应的回调中进行操作,在得到是拒绝的时候弹出对话框告诉用户,拒绝权限该功能无法正常使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值