React Native安卓端Image组件无法渲染设备本地图片问题求助
问题原因
这是Android 10(API 29)新增的分区存储特性导致的,默认开启分区存储的情况下,应用无法直接通过file://格式的路径访问公共存储目录下的媒体文件,就算已经申请了存储读写权限也会加载失败。
解决方案
方案1:临时兼容Android 10
该方案仅适用于Android 10版本,Android 11及以上系统该配置会失效,适合快速验证功能使用:
打开项目路径下的android/app/src/main/AndroidManifest.xml,在<application>节点中添加如下属性:
android:requestLegacyExternalStorage="true"
添加完成后重新编译运行应用即可正常加载file://路径的本地图片。
方案2:全版本长期兼容
- 优先升级
@react-native-community/cameraroll到最新正式版,新版本已完成分区存储适配,调用getPhotos接口会返回content://格式的媒体URI,该格式URI可以直接传给Image组件加载,无需额外处理。 - 如果暂时无法升级依赖,可借助文件操作类库(如react-native-fs)将获取到的公共目录图片,先拷贝到应用自身的私有缓存目录,再使用私有目录的
file://路径加载图片即可。
内容的提问来源于stack exchange,提问作者Ademar-SJ
相关产品推荐
相关产品推荐

