权限处理逻辑
1.弹出系统申请
2.点击拒绝
1)出现(不再提醒选项)并继续申请
2)如果自定义弹框(解释申请权限),点击拒绝,还可弹出自定义弹框进行申请
3.点击不再提醒并拒绝,需要手动设置
原生权限方法代码
//检查是否授予了所需要的权限(当返回DENIED就需要进行申请授权了)
ContextCompat.checkSelfPermission(this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED
//请求授权
ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.READ_CONTACTS},code);
//权限回调处理
权限回调
6.0以上需要动态申请的危险权限
危险权限
PermissionsDispatcher简单使用
一、添加注解和权限逻辑
1.@RuntimePermissions// 在activity或fragment上添加
2.@NeedsPermission注解,标注在你要获取权限的方法,请求权限成功时执行的代码片段
.@NeedsPermission
3.@OnShowRationale注解,用于解释申请的权限(非必须),拦截请求,告诉用户该请求是做什么的
proceed()让权限请求继续,cancel()让请求中断
@OnShowRationale
4.@OnPermissionDenied注解,用户点击拒绝时执行(未勾选不再询问时),可用于解释(拒绝就不能xxx)或重新申请
@OnPermissionDenied
5.@OnNeverAskAgain注解,用户拒绝并且点击不再询问,可用于提醒用户手动开启
(注意,有些系统的不再询问勾选项是要用户拒绝授权一次才显示出来的)
@OnNeverAskAgain
二、生成辅助类Dispatcher
dispatcher回调
需要请求权限的地方调用dispatcher.request
原生代码进行定位
原生定位