- 动态权限请求基本步骤:
- 导入相关依赖:在
build.gradle
文件中确保导入了权限相关的依赖,一般情况下AndroidX库中包含相关权限请求的支持,比如implementation 'androidx.activity:activity-ktx:1.7.2'
等。
- 检查权限:使用
ContextCompat.checkSelfPermission
方法检查权限是否已经被授予。例如检查读取外部存储权限:
val hasReadPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
- 请求权限:如果权限未被授予,则通过
ActivityCompat.requestPermissions
方法请求权限。例如:
if (hasReadPermission.not()) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), READ_REQUEST_CODE)
}
- 处理权限请求结果:重写
onRequestPermissionsResult
方法来处理权限请求的结果。
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == READ_REQUEST_CODE) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限被授予,执行相关操作
} else {
// 权限被拒绝,可以提示用户权限的重要性等
}
}
}
- 检查权限是否已经被授予:
- 使用
ContextCompat.checkSelfPermission
方法,示例代码如下:
val permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
// 权限已授予
} else {
// 权限未授予
}