尝试构建一个React Native应用程序在共享菜单中注入一个菜单项(Android的Share Action,iOS的Share Extension)。是否有一个组件,如果没有,最好的方法是什么?
我不需要在我的应用中创建ActionSheet,我需要在“共享”菜单中注入一个菜单项,以允许用户从浏览器向我的应用分享网址。
答案 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以获取有关如何执行此操作的信息。