Android——6.0运行时权限申请,onRequestPermissionsResult回调不执行问题

在Android 6.0中,应用需要处理运行时权限。当在Fragment中检查并申请权限时,onRequestPermissionsResult回调可能不执行。原因是回调必须在Activity中处理。解决方案是将回调移到关联的Activity,以确保正确处理权限逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

权限是目前APP必不可少的,这里介绍一下onRequestPermissionsResult回调不执行问题。

一,正常使用android 6.0权限:

1.检查判断

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

private final int REQUEST_CODE_ADDRESS = 100;
 
private void checkPermissioin(){
        int checkCoarse = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION);
        int checkCoarseFine = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION);
        if (checkCoarse == PackageManager.PERMISSION_GRANTED  && checkCoarseFine == PackageManager.PERMISSION_GRANTED) {
           //已经授权
        } else {//没有权限
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE_ADDRESS);//申请授权
 
        }
    }


2.处理授权回调

 @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
 
        switch (requestCode) {
            case REQUEST_CODE_ADDRESS:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] ==PackageManager.PERMISSION_GRANTED) {
                    // Permission Granted 授予权限
                  //处理授权之后逻辑
                    
                } else {
                    // Permission Denied 权限被拒绝
 
              ToastUtils.showShort(getActivity(),"权限被禁用");
                }
 
                break;
            default:
                break;
        }
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
 
    }


二、onRequestPermissionsResult回调不执行问题
问题场景:fragment中去检查权限、申请权限,回调也就写在fragment中了,而且写了之后也没有报任何错,回调方法不执行。

原因:处理权限申请回调必须写在Activity中。

解决方法:把这个回调移到这个Fragment所依附的那个Activity,处理相关逻辑。

 

相关文章:

相关文章: Android M Permissions: onRequestPermissionsResult() not being called

android6.0权限参考文档

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

 

作于201910311350,已归档

———————————————————————————————————

若本文对您有帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

祝君升职加薪,鹏程万里!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值