安卓开发Android6+权限申请管理用户拒绝权限一键解决方案

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

安卓开发Android6+权限申请管理用户拒绝权限一键解决方案

文章插图
分析:
通过分析,在手机安装时,1一些厂商系统默认禁用权限导致用户权限被禁用,2用户习惯性安装应用主动禁用权限,3用户安装时无意点击禁用权限功能 。在用户主动禁用权限后,发起请求权限时不能弹出请求界面,权限不法使用 。
解决方法:
检验自身权限是否被禁用请求用户开启权限引导用户到系统设置界面打开权限用到系统函数ActivityCompat.checkSelfPermissionActivityCompat.shouldShowRequestPermissionRationale ActivityCompat.requestPermissions
【安卓开发Android6+权限申请管理用户拒绝权限一键解决方案】分别是根权是否开启用户是否主动禁用 请求用户分配权限
解决流程:
安卓开发Android6+权限申请管理用户拒绝权限一键解决方案

文章插图
解决流程有了解方案,就可以进行代码编写
一个个权限编写申请,那就太麻烦了,我想不是我们搞技术的所要的,我们要的就是快速,没有 “一劳永逸”的方法,答案是有的 。通过两行代码就能解决问题,这样是为是简单多了呢?
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 类中完成,保持使用主代码简洁 。
展示最核代码,相信以你的智慧其他的简单代码也难不到你了吧!
安卓开发Android6+权限申请管理用户拒绝权限一键解决方案

文章插图
核心代码通过AndroidManifest.xml 中配置的权限,一一效验,不需要手动一个个写成代码进行验证那么麻烦 。如果没有权限就调用申请权限,如果有用户主动拒绝权限,直接跳到设置界面 。
我们来看看我们的开发的项目测试效果
安卓开发Android6+权限申请管理用户拒绝权限一键解决方案

文章插图
运行应用权限是被禁用状态
安卓开发Android6+权限申请管理用户拒绝权限一键解决方案

文章插图
启动时弹出申请题示
安卓开发Android6+权限申请管理用户拒绝权限一键解决方案

文章插图
跳转到设置界面当权限都通过,就不会弹出提示
如有需要原代码请移步到
或有任何疑问请给我留言
Tags:


    推荐阅读