Android权限之动态权限

本文详细介绍了Android 6.0及以上版本动态权限申请的原因、需要动态申请的权限列表以及申请步骤,包括判断系统版本、检查权限、申请权限和处理回调函数。通过实例代码展示了如何在Android应用中适配动态权限机制。
摘要由CSDN通过智能技术生成

安卓系统的权限管理机制从API 23 (也就是Android 6.0 又叫做 Android M,)之后发生了比较大的改变,在一些比较危险的权限上要求必须申请动态权限,即使你在AndroidMainfest.xml文件中申请也没有任何用,或者你可以将编译的目标版本设定这API 22,这样就可以了。但这并不是长久之计,不是吗?所以因此在这里学习一下。

动态权限需求原因

Android 6.0之前,权限在应用安装过程中只询问一次,以列表的形式展现给用户,然而大多数用户并不会注意到这些,直接就下一步了,应用安装成功后就会被赋予清单文件中的所有权限,应用就可以在用户不知情的情况下进行非法操作(比如偷偷的上传用户数据)。

需要动态申请的权限如下:

READ_CALENDAR , WRITE_CALENDAR 读写日历权限
CAMERA 调用相机权限
READ_CONTACTS , WRITE_CONTACTS , GET_ACCOUNTS 通讯录权限
ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION 定位权限
RECORD_AUDIO 录音权限
READ_PHONE_STATE ,CALL_PHONE READ_CALL_LOG, WRITE_CALL_LOG ADD_VOICEMAIL//手机状态相关
BODY_SENSORS 传感器权限
SMS SEND_SMS ,RECEIVE_SMS ,READ_SMS, RECEIVE_WAP_PUSH, RECEIVE_MMS SMS消息权限
READ_EXTERNAL_STORAGE ,WRITE_EXTERNAL_STORAGE 外部存储权限

动态权限申请步骤

AndroidMainfest.xml文件配置
没有具体分析是什么原因,可能是为了兼容低版本吧,有兴趣的自行Google一下

判断Android系统版本

在官方的文档中,可以看到低于API23 是不需要使用动态权限申请的,我们需要判断一下,代码如下: 如果是Android 6.0以上的系统,需要进行判断,我们大致看一下

  if (Build.VERSION.SDK_INT>=23) {        
            //此处做动态权限申请    
    }
  else {      
        //低于23 不需要特殊处理   
     }
  }

检查权限

如果版本高于23 ,则需要进行特殊处理,我们这里检查一下有没有权限
使用ContextCompat.CheckSlefPermission &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值