Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Expo在react native上共享图像和文件_Android_React Native_Expo - Fatal编程技术网

Android 使用Expo在react native上共享图像和文件

Android 使用Expo在react native上共享图像和文件,android,react-native,expo,Android,React Native,Expo,我已使用FileSystem.downloadsync Share.Share在iOS上运行良好。如何共享我在Android上本地保存的图像 我试过了 这两种解决方案似乎都不适用于世博会 我正在使用react本机版本: 有什么我遗漏的吗?自从SDK33以来,你可以使用Expo共享将任何类型的文件共享给其他应用程序,即使你在Android上也可以处理其文件类型 见: 用法非常简单: import * as Sharing from 'expo-sharing'; // Import the

我已使用
FileSystem.downloadsync

Share.Share在iOS上运行良好。如何共享我在Android上本地保存的图像

我试过了

这两种解决方案似乎都不适用于世博会

我正在使用react本机版本:


有什么我遗漏的吗?

自从SDK33以来,你可以使用Expo共享将任何类型的文件共享给其他应用程序,即使你在Android上也可以处理其文件类型

见:

用法非常简单:

import * as Sharing from 'expo-sharing'; // Import the library

Sharing.shareAsync(url) // And share your file !

为了让用户共享保存在我们(Expo)应用程序中的内容,我们将其结构化如下。(这在iOS和安卓系统中运行)

  • 导入共享:
  • 添加按到按钮(或任何位置):

  • 希望这有帮助:

    将不起作用,除非您退出。这使您能够共享本地文件。如何共享从外部源(如S3)加载到
    中的文件?@MikeK您可以使用Expo的
    文件系统
    库从S3下载文件,然后共享本地下载文件的uri。这就是我最终要做的,但对我来说似乎是额外的一步,不是吗?我觉得我也应该能够访问缓存/加载的图像,而不必显式地将它们下载到临时位置,然后在共享后将其删除。
    
    import * as Sharing from 'expo-sharing'; // Import the library
    
    Sharing.shareAsync(url) // And share your file !
    
    import * as FileSystem from 'expo-file-system';
    import * as Sharing from 'expo-sharing';
    
      <Button
       name="share"
       onPress={() =>
          openShareDialogAsync(media, {
             video: media.meta.fileType === 'video',
             })
           }
       />
    
     const openShareDialogAsync = async (mediaProp, options) => {
        const fileDetails = {
          extension: options.video ? '.mp4' : '.jpg',
          shareOptions: {
            mimeType: options.video ? 'video/mp4' : 'image/jpeg',
            dialosTitle: options.video
              ? 'Check out this video!'
              : 'Check out this image!',
            UTI: options.video ? 'video/mp4' : 'image/jpeg',
          },
        };
        const downloadPath = `${FileSystem.cacheDirectory}${mediaProp.media_id}${fileDetails.extension}`;
        const { uri: localUrl } = await FileSystem.downloadAsync(
          mediaProp.url,
          downloadPath
        );
        if (!(await Sharing.isAvailableAsync())) {
          showMessage({
            message: 'Sharing is not available',
            description: 'Your device does not allow sharing',
            type: 'danger',
          });
          return;
        }
        await Sharing.shareAsync(localUrl, fileDetails.shareOptions);
      };