Android动态申请权限

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里注册需要申请的权限

<uses-permission android:name="android.permission.上表权限字符"/>

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

  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进行判断.

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

    https://blog.csdn.net/xiaxiazaizai01/article/details/53912869

 

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值