博客
关于我
Android动态申请权限
阅读量:516 次
发布时间:2019-03-07

本文共 2549 字,大约阅读时间需要 8 分钟。

Android动态申请权限

      之前写了一篇关于AudioRecord录音转码的文章,在调试过程中还是遇到了权限的问题,现在的手机版本基本上都用了Android6.0以上的版本,权限分为普通权限和危险权限,对于危险权限来说,我们就需要进行动态设置了(虽然是动态申请,但是有些手机权限我还是不想给啊)。

      有些权限属于 Protected Permission,这类权限只在 AndroidManifest.xml中声明是无法真正获取到的,基于6.0之前的静态申请是可以的。现在主流用的是Androidstudio来进行项目的创建,而见一个同事还是用的Eclipse,他上面编的apk程序不需要动态申请,而且也不用签名,真不知道什么鬼!

        危险权限有以下这些

group:android.permission-group.CONTACTS    permission:android.permission.WRITE_CONTACTS    permission:android.permission.GET_ACCOUNTS        permission:android.permission.READ_CONTACTS   group:android.permission-group.PHONE    permission:android.permission.READ_CALL_LOG    permission:android.permission.READ_PHONE_STATE     permission:android.permission.CALL_PHONE    permission:android.permission.WRITE_CALL_LOG    permission:android.permission.USE_SIP    permission:android.permission.PROCESS_OUTGOING_CALLS    permission:com.android.voicemail.permission.ADD_VOICEMAIL   group:android.permission-group.CALENDAR    permission:android.permission.READ_CALENDAR    permission:android.permission.WRITE_CALENDAR   group:android.permission-group.CAMERA    permission:android.permission.CAMERA   group:android.permission-group.SENSORS    permission:android.permission.BODY_SENSORS   group:android.permission-group.LOCATION    permission:android.permission.ACCESS_FINE_LOCATION    permission:android.permission.ACCESS_COARSE_LOCATION   group:android.permission-group.STORAGE    permission:android.permission.READ_EXTERNAL_STORAGE    permission:android.permission.WRITE_EXTERNAL_STORAGE   group:android.permission-group.MICROPHONE    permission:android.permission.RECORD_AUDIO   group:android.permission-group.SMS    permission:android.permission.READ_SMS    permission:android.permission.RECEIVE_WAP_PUSH    permission:android.permission.RECEIVE_MMS    permission:android.permission.RECEIVE_SMS    permission:android.permission.SEND_SMS    permission:android.permission.READ_CELL_BROADCASTS

  动态申请权限

   首先还是需要在AndroidManifest.xml里注册需要申请的权限

      之后需要在代码里动态申请

if (ContextCompat.checkSelfPermission(this, Manifest.permission.上表权限字符) != PackageManager.PERMISSION_GRANTED) {            //判断没有权限,重新申请 或者进行其它操作            //申请权限                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.上表权限字符}, 1);                                 }else{             //判断有权限 你要执行的事        }

   if里面是判断又没有申请到的权限,没有就可以用ActivityCompat.requestPermissions申请权限,有的话就可以在else中执行你的代码,requestPermissions的第一个参数是上下文关联,第二个是要申请的字符串数组,表明你可以同时申请多个权限,不用一个个申请过去,第三个参数是请求码便于在onRequestPermissionsResult 方法中根据requestCode进行判断.

    关于多个权限的申请可以参考如下:

    

 

    好了动态申请就是这么简单

 

 

转载地址:http://mfvcz.baihongyu.com/

你可能感兴趣的文章
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 添加列,修改列,删除列
查看>>
mysql 添加索引
查看>>
MySQL 添加索引,删除索引及其用法
查看>>
mysql 状态检查,备份,修复
查看>>
MySQL 用 limit 为什么会影响性能?
查看>>
MySQL 用 limit 为什么会影响性能?有什么优化方案?
查看>>
MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
查看>>
mysql 用户管理和权限设置
查看>>
MySQL 的 varchar 水真的太深了!
查看>>
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>
MySQL 的instr函数
查看>>
MySQL 的mysql_secure_installation安全脚本执行过程介绍
查看>>
MySQL 的Rename Table语句
查看>>
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>
MySQL 的存储引擎有哪些?为什么常用InnoDB?
查看>>
Mysql 知识回顾总结-索引
查看>>
Mysql 笔记
查看>>
MySQL 精选 60 道面试题(含答案)
查看>>