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

问题:

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

2d57d38521b1ab0a88a5d9c62fc6681e.png

分析:

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

解决方法:

检验自身权限是否被禁用请求用户开启权限引导用户到系统设置界面打开权限用到系统函数 ActivityCompat.checkSelfPermission ActivityCompat.shouldShowRequestPermissionRationale ActivityCompat.requestPermissions

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

解决流程:

3e336de684074a085716c847030c9345.png解决流程

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

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

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 类中完成,保持使用主代码简洁。

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

1cf6323d483499c530031c7fd625c6c9.png核心代码

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

我们来看看我们的开发的项目测试效果

e4118a42746f5bef1f542443e45eb482.png运行应用权限是被禁用状态

9b26e1477e34ec4dbfcdcaf56a9d41c0.png启动时弹出申请题示

f845fd463e2d452e4057336e1a0bd76d.png跳转到设置界面

当权限都通过,就不会弹出提示

如有需要原代码请移步到

或有任何疑问请给我留言

举报/反馈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值