Android6.0以上 权限申请管理用户拒绝权限导致闪退的快速一劳永逸的解决方案

问题:
android 开发中,权限是一个重要的环节,不可避免的环节。尤其是刚入行的小白们,认为在配 AndroidManifest 中加入权限表就万事大吉。 没想自己测试时还是正常,打包发布别人安装后总会出现各种BUG 或闪退。通过调试也找不到问题所在。 没想到的是,权限没有拿到导至调用系统功能失败,引法闪退或其他的问题。 在刚好在项目开发中就遇到这个问题,拿各种手机上试,有手机闪退,通过调试后发现了这个问题。相信在你们开发同样会遇到这个问题, 这个问题来自 android 系统升级到 android 6 以后的版本手机,都会有这样的问题。

在这里插入图片描述
分析:

通过分析, 在手机安装时,1一些厂商系统默认禁用权限导致用户权限被禁用,2用户习惯性安装应用主动禁用权限,3用户安装时无意点击禁用权限功能。 在用户主动禁用权限后,发起请求权限时不能弹出请求界面,权限不法使用。

解决方法:

检验自身权限是否被禁用

请求用户开启权限

引导用户到系统设置界面打开权限

用到系统函数
ActivityCompat.checkSelfPermission
ActivityCompat.shouldShowRequestPermissionRationale
ActivityCompat.requestPermissions

分别是根权是否开启
用户是否主动禁用
请求用户分配权限

解决流程:

在这里插入图片描述

解决流程

有了解方案,就可以进行代码编写

一个个权限编写申请,那就太麻烦了,我想不是我们搞技术的所要的,我们要的就是快速,没有 “一劳永逸”的方法,答案是有的。通过两行代码就能解决问题,这样是为是简单多了呢?

PermissionUtil.checkPermission(this,null); PermissionUtil.onRequestPermissionsResult(this,requestCode,permissions,grantResults);

示例代码 :

/**

* 启动ACtivity 权限申请

*/

public class SplashActivity extends AppCompatActivity {

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_splash);
//第一步
//测试权限并请求权限

PermissionUtil.checkPermission(this,null);

}

@Override

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

//第二步

//申请权限结果用户禁用引到系统设置

PermissionUtil.onRequestPermissionsResult(this,requestCode,permissions,grantResults);

}

}

把所有核心代码封装代码写到 PermissionUtil 类中完成,保持使用主代码简洁。
够简单吧只有两行代码,每次新工程都能快速移植。

展示最核代码,相信以你的智慧其他的简单代码也难不到你了吧!

在这里插入图片描述
核心代码

通过AndroidManifest.xml 中配置的权限,一一效验,不需要手动一个个写成代码进行验证那么麻烦。 如果没有权限就调用申请权限,如果有用户主动拒绝权限,直接跳到设置界面。

我们来看看我们的开发的项目测试效果
在这里插入图片描述

运行应用权限是被禁用状态

在这里插入图片描述启动时弹出申请题示

在这里插入图片描述
跳转到设置界面

当权限都通过,就不会弹出提示
代码己上存
https://download.csdn.net/download/gao5411/12117324

如有需要原代码请移步到
或有任何疑问请给我留言

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页