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

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

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

自己定义的请求Code

private final static int REQUEST_CODE_ASK_WRITE_EXTERNAL_STORAGE=0x123;


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

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

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

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

 @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode){
            case REQUEST_CODE_ASK_WRITE_EXTERNAL_STORAGE:
                if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    initEvent();
                }else{
                    finish();
                }
                break;
            default:
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }
这里grantResults[0] 的结果有两种一种是授权,一种是阻止,当授权时就执行你的相应操作,否则就关闭程序。

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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值