EasyPermissions是Google为了方便开发者为App申请权限而推出的开源库。帮助开发者极大的精简了权限申请的过程。申请权限的时候也非常简单
/**
* @params host Activity或者Fragment
* @params rationale String字符串,用于描述需要申请权限的说明
* @params requestCode 用于标识权限申请的回调
* @params perms 需要申请的权限组
*/
EasyPermissions.requestPermissions(this, rationale, 0, perms);
然而当真正进行权限申请的时候,却发现多了个弹窗。
This app may not work correctly without the requested permissions 是rationale为null时展示的文案,不为null展示的是传入的rationale。当用户点击确定之后才是系统的权限申请弹窗。无疑使得权限的申请过程变得复杂了,产品也不会同意这样的申请流程。因此,需要去掉这个弹窗,直接弹出系统的权限申请。追踪其调用过程发现流程如下。
1.开发者调用EasyPermissions.requestPermissions()方法, EasyPermissions.requestPermissions()将传入的参数封装成PermissionRequest。
2.然后调用PermissionRequest.getHelper().requestPermissions()申请权限
3.PermissionHelper.requestPermissions()会通过shouldShowRationale()方法对传入的perms中的权限进行判断。
4.如果有权限要申请,就调用showRequestPermissionRationale()方法,即弹出上边原因说明弹窗,用户点击确定之后再进行权限申请,此时才会弹出真正的权限申请弹窗。