当前位置:   article > 正文

Kotlin 实现动态获权的两种方式?_kotlin permission box

kotlin permission box

一、自定义

1.在项目的BaseActivity添加代码

/**
 * 动态获权
 * */
/**
 * 动态获权请求值
 */
private var REQUEST_CODE_PERMISSION = 0x00099
protected val TAG = this.javaClass.simpleName

/**
 * 请求权限
 * 动态获权
 * @param permissions 请求的权限
 * @param requestCode 请求权限的请求码
 */
open fun requestPermission(
    permissions: Array<String>,
    requestCode: Int
) {
    REQUEST_CODE_PERMISSION = requestCode
    if (checkPermissions(permissions)) {
        permissionSuccess(REQUEST_CODE_PERMISSION)
    } else {
        try {
            val needPermissions =
                getDeniedPermissions(permissions)
            ActivityCompat.requestPermissions(
                this,
                needPermissions.toTypedArray(),
                REQUEST_CODE_PERMISSION
            )
        } catch (e: Exception) {
            Log.e("BaseActivity", "获取权限失败 Exception = $e")
        }
    }
}

/**
 * 检测所有的权限是否都已授权
 */
fun checkPermissions(permissions: Array<String>): Boolean {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        return true
    }
    for (permission in permissions) {
        if (ContextCompat.checkSelfPermission(
                this,
                permission
            ) != PackageManager.PERMISSION_GRANTED
        ) {
            return false
        }
    }
    return true
}

/**
 * 获取权限集中需要申请权限的列表
 */
fun getDeniedPermissions(permissions: Array<String>): List<String> {
    val needRequestPermissionList: MutableList<
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/483864
推荐阅读
相关标签
  

闽ICP备14008679号