android 6.0权限,onRequestPermissionsResult回调不执行

一、正常的使用方法

如果应用具有此权限,方法将返回PackageManager.PERMISSION_GRANTED,并且应用可以继续操作。
如果应用不具有此权限,方法将返回PERMISSION_DENIED,且应用必须明确向用户要求权限。

//检查权限
 if (ContextCompat.checkSelfPermission(MainActivity.this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {
            Log.e("--------->", "没有权限");
            //申请授权
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);

        } else {

            Log.e("--------->", "已经被授权");
        }

授权回调

//处理权限申请回调(写在Activity中)
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

        switch (requestCode) {
            case 1: {
                // 授权被允许
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Log.e("-------->", "授权请求被允许");
                    // permission was granted, yay! Do the
                    // contacts-related task you need to do.

                } else {
                    Log.e("-------->", "授权请求被拒绝");
                }
                return;
            }
        }
    }

二、onRequestPermissionsResult回调不执行

有的时候我们可能在fragment中去检查权限、申请权限,自然就认为回调也就写在fragment中了,而且写了之后也没有报任何错。这也就是为什么回调方法不执行的原因,所以我们把这个回调移到这个Fragment所依附的那个Activity,就可以顺利执行啦。(注意,我这里说的Fragment是v4包下的)

参考 Android M Permissions: onRequestPermissionsResult() not being called

android6.0权限参考文档

一行代码解决Android M新的运行时权限问题

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值