最近在做Android15的适配,发现WRITE_EXTERNAL_STORAGE跟READ_EXTERNAL_STORAGE无法使用了,被弃用了
- 在android 13添加了外部细分权限,READ_MEDIA_IMAGES跟READ_MEDIA_VIDEO及 READ_MEDIA_AUDIO权限,而在应用内部的文件管理则不需要权限,直接可以进行操作。
在android 14又增加了READ_MEDIA_VISUAL_USER_SELECTED,如果你想要在android14上访问外部的照片跟视频,则需要这三个权限:READ_MEDIA_VISUAL_USER_SELECTED,READ_MEDIA_IMAGESREAD_MEDIA_VIDEO
所以最终做的适配:
判断权限的请求结果需要分4种情况,分别是:
Android 13及以上完整照片和视频访问权限
Android 14及以上部分照片和视频访问权限
Android 12及以下完整本地读写访问权限
java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
permissionLauncher.launch(
arrayOf(READ_MEDIA_IMAGES,
READ_MEDIA_VIDEO,
READ_MEDIA_VISUAL_USER_SELECTED)
)
} else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.TIRAMISU) {
permissionLauncher.launch(arrayOf(READ_MEDIA_IMAGES, READ_MEDIA_VIDEO))
} else {
permissionLauncher.launch(arrayOf(READ_EXTERNAL_STORAGE))
}