1

我正在开发一个 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'

4

0 回答 0