在React Native中添加共享操作

时间:2016-02-14 12:20:40

标签: android ios react-native

尝试构建一个React Native应用程序在共享菜单中注入一个菜单项(Android的Share Action,iOS的Share Extension)。是否有一个组件,如果没有,最好的方法是什么?

我不需要在我的应用中创建ActionSheet,我需要在“共享”菜单中注入一个菜单项,以允许用户从浏览器向我的应用分享网址。

1 个答案:

答案 0 :(得分:2)

您需要在项目中添加一些本机代码。我没有为iOS做过这方面的经验,但这里有一个关于如何在Android上做这个的大纲。

简化Android documentation's example,您应该能够编写类似这样的内容,以允许其他应用将“文本字符串”共享到您的应用中:

<强>的AndroidManifest.xml

...
<activity android:name="<your_app>.MainActivity">
    <!-- Allow users to launch your app directly -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    <!-- Allow other apps to "share" with your app -->
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
</activity>
...

<强> MainActivity.java

...
@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Get intent, action and MIME type
    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();

    // Match the intent specified in AndroidManifest.xml
    if (Intent.ACTION_SEND.equals(action) && "text/plain".equals(type)) {
            handleSendText(intent); // Handle text being sent
    } 
}
...

如果您使用React Native在Javascript中编写大部分应用程序逻辑,您可能希望handleSendText触发Javascript事件 - 请参阅React Native docs on native modules以获取有关如何执行此操作的信息。