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

mac2024-04-16  36

权限是目前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,已归档

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

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

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

Winter_world 认证博客专家 嵌入式开发 Android JavaWeb 一个只喜欢带干货,不为吸引眼球而弄些花哨软文的博主;一个秉承活到老学到老精神的双985高校毕业研究僧;一个曾就职于华为公司,敢于拼搏、项目经验丰富的工程师;一个从硬件、嵌入式、互联网多路径全面开花的全栈达人;点击下方关注,博主将增加无限动力分享更多干货,愿与您相伴,不负韶华,奔向更好的明天!
最新回复(0)