如何在 expo 应用程序中处理共享意图(发送图像)?

Posted

技术标签:

【中文标题】如何在 expo 应用程序中处理共享意图(发送图像)?【英文标题】:How to handle a share intent(sending an image) in the expo app? 【发布时间】:2020-05-11 01:52:15 【问题描述】:

有没有办法处理共享文件到 expo 应用程序?根据documentation of app.json 可以提供intentFilters,但我找不到任何事后处理它们的信息。

弹出不是一种选择。

【问题讨论】:

你看过链接吗? Handling links into your app。再往下一点,它还包含有关处理传递给应用程序的数据的部分。 是的,我做到了,但它只提供了一个看起来像 exp://exp.host/@community/native-component-list 的 url,但没有图像信息 【参考方案1】:

文档说

要在 ExpoKit 项目中添加或编辑意图过滤器,请直接编辑 androidManifest.xml。

您可以看到 here 如何在清单中添加一个意图过滤器,它定义将处理接收文本(您可以删除这部分)或图像的活动(在示例中为 ShareActivity

<activity android:name="ShareActivity">
    <!-- This activity handles "SEND" actions with text data -->
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="text/plain"/>
    </intent-filter>
    <!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <action android:name="android.intent.action.SEND_MULTIPLE"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="application/vnd.google.panorama360+jpg"/>
        <data android:mimeType="image/*"/>
        <data android:mimeType="video/*"/>
    </intent-filter>
</activity>

然后,在您在 expo.io 中的活动中,您需要从 Intent 获取额外信息,您将获得附加图像的信息

【讨论】:

他没有使用 Expokit,而是一个托管的 expo 应用程序(并且不能选择弹出)。所以很遗憾,这是不可能的。 我没有使用 expokit,我知道如何添加意图过滤器(我有一个问题中的文档链接)。我不知道如何处理来自应用程序的图像。 例如要处理通知,可以添加Notifications.addListener(listener) 并在listener 回调中处理通知。我希望分享意图存在类似的东西

以上是关于如何在 expo 应用程序中处理共享意图(发送图像)?的主要内容,如果未能解决你的问题,请参考以下文章

隐含意图:将图像从画廊分享到我的应用程序

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

如何强制共享意图打开特定应用程序?

使用android意图将带有图像的文本共享到instagram

分享意图需要很长时间才能出现

无法通过电子邮件意图发送图像附件