我正在开发一个 React Native 应用程序,它用相机拍照,存储图像,然后允许用户将图像保存到他们的照片库,或者通过短信、电子邮件、社交媒体等分享这些图像。
除其他外,我正在使用 react-native-fs ( https://github.com/itinance/react-native-fs ) 和 react-native-share ( https://github.com/react-native-community/ react-native-share ) 来实现这一点。在 iOS 上一切正常。当我尝试在 Android 上共享存储的图像时出现问题。我做了一些挖掘,看起来图像必须在 Base64 中才能在 android 上共享。我正在尝试在 react-native-fs 中将图像转换为 base64,然后将其发送到 react-native-share,但是当我尝试共享 base64 图像时,出现以下无用的错误:
错误:系统故障
以下是相关代码:
RNFS.readFile(this.state.sourceURI, 'base64')
.then((res) => {
this.setState({androidURI: res});
})
.then((res) => {
const options = {
title: 'Share',
message: "test",
type: "image/png",
url: 'data:image/png;base64,' + this.state.androidURI,
};
Share.open(options)
.then((res) => { console.log(res); })
.catch((err) => {
Alert.alert(
'Alert',
"Sharing Error: " + JSON.stringify(err),
[
{
text: 'Cancel',
onPress: () => console.log('Cancel Pressed'),
style: 'cancel',
},
],
{cancelable: false},
);
});
})
.catch((err) => {
Alert.alert(
'Alert',
"Error converting to base64: " + JSON.stringify(err),
[
{
text: 'Cancel',
onPress: () => console.log('Cancel Pressed'),
style: 'cancel',
},
],
{cancelable: false},
);
});
在 Share.open(“共享错误”)中捕获了该错误。如果有人能给我一些关于我做错了什么的见解,我将不胜感激。如果您需要我提供更多信息,我很乐意提供。
谢谢!!
编辑:为了澄清, this.state.sourceURI 包含以下字符串:
'file:///storage/emulated/0/Android/data/com.{my app name here}/files/Test.png'