1.首先需要在工程里集成Easypermission 官方库
implementation 'pub.devrel:easypermissions:1.2.0'
2.重写请求方法(该方法最好写在需要使用权限判断的界面)
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode,permissions,grantResults,this) }
3.在需要动态加载权限的地方判断是否有该权限 (以打开相机为例 还有一点需要注意点的是kotlin写法中 对于可变变量 传参时需要使用*参数名 的方式传递)
if (EasyPermissions.hasPermissions(context!!,*permiss)){ openCamera() }else{ EasyPermissions.requestPermissions(this@MineFragment,"申请相机权限",1,*permiss) }
4.请求权限成功或失败的回调(当用户选择禁止后不再询问时 可以在申请失败中做以下操作)
//权限申请失败 override fun onPermissionsDenied(requestCode: Int, perms: MutableList<String>) { if (EasyPermissions.somePermissionPermanentlyDenied(this@MineFragment,perms)){ AppSettingsDialog.Builder(this@MineFragment) .setTitle("权限以被禁用") .setRationale("如果不打开权限则无法使用相机,请至设置中打开权限") .build() .show() } } //权限申请成功 override fun onPermissionsGranted(requestCode: Int, perms: MutableList<String>) { openCamera() }
以上EasyPermission的使用就完成啦。