React Native <img/>无法从android中的sdcard加载图片

时间:2016-06-17 10:08:55

标签: android react-native

我正在尝试从React本机图像组件中的相机拍摄照片后从外部SD卡加载图像,但是它没有在android中呈现。我甚至检查了那个位置是否缺少图像,但这不是问题所在。但是在iOS从相机拍照后从位置加载图像时效果很好。

 <Image source={{uri:'/storage/emulated/0/Pictures/image-0ea0d714-9469-432b-8869-b6637be2be10.jpg'}} style={{height:200, width:200}} />

这是 AndroidManifest.xml

中的权限列表
<!-- For Image picker start -->
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.camera" android:required="false"/>
    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>

3 个答案:

答案 0 :(得分:14)

刚出现这个问题,通过在file://

之前添加文件路径来解决这个问题

所以,而不是:

 <Image source={{uri:'/storage/emulated/0/Pictures/myImage.jpg'}} style={myImageStyle} />

使用:

 <Image source={{uri:'file:///storage/emulated/0/Pictures/myImage.jpg'}} style={myImageStyle} />

注意连续3个斜线而不是@Cherniv建议的两个斜杠。

答案 1 :(得分:0)

DSquare是正确的,除非您正在运行IOS。在这种情况下,“ file://”不起作用。

<Image source={{uri:`${Platform.OS === "android" ? 'file://' : ''}/storage/emulated/0/Pictures/myImage.jpg`}} style={myImageStyle} />

第二个问题是,该路径/storage/emulated/0在IOS上也不存在。

您可以使用react-native-fs

使生活更轻松
import RNFS from "react-native-fs";
...
renderPhoto() {
    return <Image source={{uri:`${Platform.OS === "android" ? 'file://' : ''}/${RNFS.PicturesDirectoryPath}/myImage.jpg`}} style={myImageStyle} />
}

RNFS.PicturesDirectoryPath会在Android上转换为/storage/emulated/0/Pictures

不再头痛,不再怀疑在哪个设备/平台上哪个路径。

答案 2 :(得分:0)

我们应该获得library(dplyr) library(tidyr) library(ggplot2) #Code DF %>% pivot_longer(-MU)%>% ggplot(aes(x=MU,y=value,group=name,color=name)) + geom_point()+ geom_line() 权限

refer this