真正的好用的权限申请库,无需依赖其他第三方库,纯原生代码,调用方便
1.支持动态添加权限申请,个数不受限
2.支持权限名称重命名
3.支持单纯申请权限以及申请权限返回申请结果
4.链式调用,无需继承以及实现接口的方式,随调随用
5.无性能问题,无内存泄漏问题
6.支持6.0以上所有机型,低于此版本默认返回成功,后续会处理国产机型低版本权限校验
PermissionHelper.Builder(this)
.addPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, R.string.str_extraternal_permissioin)
.requestPermission()
亦或
/**
* 申请动态权限
* 添加权限(权限个数支持动态添加 permissionName为字符串) addPermission(permission: String, permissionName: String? = null)
* 添加权限 (权限个数支持动态添加 resId:为资源id) addPermission(permission: String, @StringRes resId: Int)
* 申请权限 requestPermission 带参数时回调申请结果 空参场景则指申请,不返回申请结果
*/
PermissionHelper.Builder(this)
.addPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, R.string.str_extraternal_permissioin)
.requestPermission(object : IPermissionResult {
override fun onGranted() {
Toast.makeText(this@MainActivity, "授权成功", Toast.LENGTH_SHORT).show()
}
override fun onDenied(deniedPermissions: ArrayList<PermissionBean>) {
showDeniedPermissionDialog(deniedPermissions)
}
})
``` kotlin
addPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, R.string.str_extraternal_permissioin)
或者
.addPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, "写入外部存储权限")
亦或
.addPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
```
``` kotlin
.addPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.addPermission(Manifest.permission.CAMERA, "摄像机权限")
.addPermission(Manifest.permission.READ_EXTERNAL_STORAGE, "读取外部存储权限")
.addPermission(Manifest.permission.ACCESS_COARSE_LOCATION, "定位权限")
......
```
``` kotlin
.requestPermission()
```
``` kotlin
.requestPermission(object : IPermissionResult {
override fun onGranted() {
Toast.makeText(this@MainActivity, "授权成功", Toast.LENGTH_SHORT).show()
}
override fun onDenied(deniedPermissions: ArrayList<PermissionBean>) {
showDeniedPermissionDialog(deniedPermissions)
}
}
```
``` kotlin
private fun showDeniedPermissionDialog(deniedPermissions: ArrayList<PermissionBean>) {
val stringBuilder = StringBuilder()
deniedPermissions.forEach {
stringBuilder.append("${if (it.tips.isEmpty()) it.permission else it.tips}\n")
}
AlertDialog.Builder(this@MainActivity)
.setTitle("权限授权提示")
.setMessage("请授予一下权限,以继续使用该功能\n\n$stringBuilder")
.setPositiveButton("好的") { dialog, which ->
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
val uri =
Uri.fromParts("package", [email protected], null)
intent.data = uri
try {
[email protected](intent)
} catch (e: Exception) {
e.printStackTrace()
}
}
.create()
.show()
```
此开源库通过创建permissionFragment,在fragment中处理相应的权限,解决android原生调用繁琐的问题