为了账号安全,请及时绑定邮箱和手机立即绑定

当用户拒绝权限时呢

在BaseActivity()中

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

   switch (requestCode){
       case WebApi.WRITE_EXTERNAL_CARD:
           //处理写sd卡授权回调
           doWriteExternalCard();
           break;
       case WebApi.CALL_PHONE_CARD:
           doCallPhone();
           break;
       case WebApi.GET_LOCATION_XY:
           //处理写sd卡授权回调
           doLoadEmptyWebView();
           break;
   }

用户拒绝权限时这个方法不执行吗?如果执行,那里面的逻辑是不是不够严谨

正在回答

2 回答

该方法不管允许或拒绝都会被执行。但你这种写法确实不严谨

//以下方法为请求权限。0为权限组id,而第二个参数是请求权限组,权限组里面包含多个权限

ActivityCompat.requestPermissions(this, new String[]{
   Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);

/**
* 权限处理结果返回
*
* @param requestCode  请求组id
* @param permissions  对应id的权限组
* @param grantResults 权限组对应权限处理结果
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
   super.onRequestPermissionsResult(requestCode, permissions, grantResults);
   switch (requestCode) {//判断哪个请求权限组
       case  0://假设是0的请求权限组
           if(grantResults[0]==PackageManager.PERMISSION_GRANTED){
               //请求权限组里的哪个权限,这里假设判断第一个

              //根据上述请求方法传入的权限组,第一个就是Manifest.permission.READ_EXTERNAL_STORAGE

           }

   }
}

0 回复 有任何疑惑可以回复我~
#1

格心派 提问者

非常感谢!
2016-12-05 回复 有任何疑惑可以回复我~
#2

格心派 提问者

讲师是这样写的,我也觉得你这样写严谨写,有点奇怪你的onRequestPermissionsResult方法为甚调用super方法,我觉得没啥必要
2016-12-05 回复 有任何疑惑可以回复我~
#3

Abrazen_zz 回复 格心派 提问者

super调不调用还是要具体分析,不过调用肯定没什么问题
2016-12-27 回复 有任何疑惑可以回复我~
#4

奋起的小星星

如果一次请求多个权限,这种方式是不是有问题呢?
2017-12-28 回复 有任何疑惑可以回复我~
#5

慕标5394148

假如申请sd卡写入权限, if(grantResults[0]==PackageManager.PERMISSION_GRANTED){ 这一句中是不是就得改成grantResults[1]
2018-11-24 回复 有任何疑惑可以回复我~
查看2条回复

如果一次请求多个权限,这种方式是不是有问题呢?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android6.0新特性
  • 参与学习       20137    人
  • 解答问题       10    个

代码实战实现App能够适配6.0系统,了解新的特性

进入课程

当用户拒绝权限时呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信