Android 13应用中替代WRITE_EXTERNAL_STORAGE的权限是什么?
Android 13 图片选择器权限替代方案
核心结论
在Android 13(API 33)及以上设备上,WRITE_EXTERNAL_STORAGE 已被废弃,针对图片选择器(读取系统相册图片)的场景,无需申请写入权限,直接使用细分媒体权限 READ_MEDIA_IMAGES 替代即可。
权限适配逻辑
- Android 13+(API 33):使用
READ_MEDIA_IMAGES,仅针对图片媒体的读取权限,完全覆盖图片选择器的需求。 - Android 12及以下:仍可保留原有的
WRITE_EXTERNAL_STORAGE或READ_EXTERNAL_STORAGE做兼容。
针对 react-native-image-crop-picker 代码修改
将原代码中硬编码的权限列表替换为版本适配的逻辑:
@ReactMethod public void openPicker(final ReadableMap options, final Promise promise) { final Activity activity = getCurrentActivity(); if (activity == null) { promise.reject(E_ACTIVITY_DOES_NOT_EXIST, "Activity doesn't exist"); return; } setConfiguration(options); resultCollector.setup(promise, multiple); initiatePicker(activity); // 替换权限检查逻辑,适配Android版本 List<String> permissions; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { permissions = Collections.singletonList(Manifest.permission.READ_MEDIA_IMAGES); } else { permissions = Collections.singletonList(Manifest.permission.WRITE_EXTERNAL_STORAGE); } permissionsCheck(activity, promise, permissions, new Callable<Void>() { @Override public Void call() { return null; } }); }
额外建议
如果不想手动修改源码,直接升级 react-native-image-crop-picker 到最新稳定版本,官方已经完成了Android 13的权限适配,无需自行调整权限逻辑。
内容的提问来源于stack exchange,提问作者Mona Singh
相关产品推荐
相关产品推荐

