permissionsdispatcher 如何兼容android 33 的文件夹访问权限 READ_MEDIA_IMAGES READ_MEDIA_IMAGES READ_MEDIA_VIDEO
在使用 PermissionsDispatcher 进行文件夹访问权限请求时,可以使用以下步骤进行 Android 11(API 级别 30)及更高版本的兼容性处理:
- 添加所需的权限到 AndroidManifest.xml 文件中:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- 在项目的 build.gradle 文件中,将 targetSdkVersion 设置为 30 或更高版本:
android {
// ...
defaultConfig {
// ...
targetSdkVersion 30
}
}
- 在需要访问文件夹的地方,使用 PermissionsDispatcher 进行权限请求。例如,如果需要访问媒体图像文件夹和媒体视频文件夹,可以使用以下代码:
@RuntimePermissions
class MainActivity : AppCompatActivity() {
private val REQUEST_CODE_MEDIA_IMAGES = 1
private val REQUEST_CODE_MEDIA_VIDEO = 2
fun accessMediaFolders() {
// 请求媒体图像文件夹权限
MainActivityPermissionsDispatcher.accessMediaImagesWithPermissionCheck(this)
// 请求媒体视频文件夹权限
MainActivityPermissionsDispatcher.accessMediaVideoWithPermissionCheck(this)
}
@NeedsPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
fun accessMediaImages() {
// 访问媒体图像文件夹的逻辑
}
@NeedsPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
fun accessMediaVideo() {
// 访问媒体视频文件夹的逻辑
}
@OnPermissionDenied(Manifest.permission.READ_EXTERNAL_STORAGE)
fun onPermissionDenied() {
// 权限被拒绝的处理逻辑
}
@OnNeverAskAgain(Manifest.permission.READ_EXTERNAL_STORAGE)
fun onNeverAskAgain() {
// 用户选择“不再询问”的处理逻辑
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
// 将权限请求的结果传递给 PermissionsDispatcher
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
MainActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults)
}
}
请注意,以上代码仅演示了如何使用 PermissionsDispatcher 请求文件夹访问权限,并未包含实际的文件夹访问逻辑。根据您的需求,您需要在 accessMediaImages() 和 accessMediaVideo() 方法中添加相应的文件夹访问逻辑。
希望这可以帮助到您
原文地址: https://www.cveoy.top/t/topic/iQxQ 著作权归作者所有。请勿转载和采集!