原生android 权限管理,Android 权限管理(原生、EasyPermissions、RxPermissions)

本文详细介绍了Android 6.0及以上版本的动态权限管理,包括原生方式、EasyPermissions和RxPermissions的使用步骤及示例代码。通过这些方法,开发者能够优雅地处理权限申请,提升用户体验。
摘要由CSDN通过智能技术生成

前言:动态权限管理是Android6.0(Build.VERSION_CODES.M = Api23)推出的,提醒用户当前APP所需要的权限,防止滥用。这些权限一般分为三种:(1)普通权限:直接manifest清单文件中写上注册就行了 (2)危险权限:需要动态申请 (3)特殊权限:此处暂不说明。

注意:这里我们就按照原生,和git上比较出名的第三方权限管理工具,EasyPermissions和RxPermissions

一、参考

二、异常

异常:java.lang.SecurityException: getDeviceId: Neither user 10127 nor current process has android.permission.READ_PHONE_STATE.

解释:走到方法getDeviceId这里异常,缺失权限:READ_PHONE_STATE,先检查manifest.xml清单文件里有没有,没有补上,如果有,那么这个权限就得动态获取了。

三、流程

1、第一次询问权限 -》允许权限(再次询问同样权限也不会弹框,已注册)

2、第一次询问权限-》拒绝权限-》再次询问权限-》允许权限(再次询问同样权限也不会弹框,已注册)

3、第一次询问权限-》拒绝权限-》再次询问权限-》不再询问(再次询问同样权限也不会有弹框,直接拒绝)

--------------------几张图片说明--------------------

734ad53eb7b7

first_request.png

734ad53eb7b7

not_first_request.png

734ad53eb7b7

not_first_request_and_not_ask_again.png

四、实例

1、原生,比较长且繁琐,先理解下

/**

* 测试:原生动态权限管理

* */

private void testOrgPermission(){

//判断当前系统是否高于或等于6.0

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

//已注册权限

if (ContextCompat.checkSelfPermission(instance, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值