Android中已经添加权限,依然提示缺少权限,此时你需要添加动态权限

原文链接:http://blog.csdn.net/android_hdh/article/details/52583557

-------------------------------

最近在开发项目时,项目需要获取系统的WRITE_EXTERNAL_STORAGE权限,然后就在清单文件AndroidManifest中添加了该权限,但是在系统运行后发现并没有创建该有的文件,然后查看了一下日志发现系统提示没有获得权限,之后在网上搜索了下发现Android6.0之后需要动态获取这种权限,然后改了一下果真可以了,下面把动态获取权限的过程讲解一下,以备将来查看和帮助哪些遇到同样问题的人。

下面贴出请求动态获取权限的代码

自己定义的请求Code

[java]  view plain  copy
 print ?
  1. private final static int REQUEST_CODE_ASK_WRITE_EXTERNAL_STORAGE=0x123;  


[java]  view plain  copy
 print ?
  1. if(Build.VERSION.SDK_INT >= 23){//判断当前系统的版本  
  2.             int checkWriteStoragePermission = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);//获取系统是否被授予该种权限  
  3.             if(checkWriteStoragePermission != PackageManager.PERMISSION_GRANTED){//如果没有被授予  
  4.                 ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_CODE_ASK_WRITE_EXTERNAL_STORAGE);  
  5.                 return;//请求获取该种权限  
  6.             }else{  
  7.                 initEvent();//定义好的获取权限后的处理的事件  
  8.             }  
  9.         }else {  
  10.             initEvent();  
  11.         }  

当触发了获取该权限的操作时会弹出一个提示框,会询问你是否允许添加该种权限,具体如下图

然而,我们如何知道用户是点了什么呢?这里我们需要重写一下事件onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){}

通过该事件来回调监听用户的操作

[java]  view plain  copy
 print ?
  1. @Override  
  2.    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {  
  3.        switch (requestCode){  
  4.            case REQUEST_CODE_ASK_WRITE_EXTERNAL_STORAGE:  
  5.                if(grantResults[0] == PackageManager.PERMISSION_GRANTED){  
  6.                    initEvent();  
  7.                }else{  
  8.                    finish();  
  9.                }  
  10.                break;  
  11.            default:  
  12.                super.onRequestPermissionsResult(requestCode, permissions, grantResults);  
  13.        }  
  14.    }  
这里grantResults[0] 的结果有两种一种是授权,一种是阻止,当授权时就执行你的相应操作,否则就关闭程序。

好了关于动态获取权限的流程就是这些,如果你觉得有用就顶一个吧,哈哈


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值