如何让我的React Native应用出现在Android的分享列表中
前置配置(必要,需先修改)
首先需要修改AndroidManifest.xml文件让系统识别你的应用支持分享接收,文件路径为 android/app/src/main/AndroidManifest.xml,找到主Activity的配置标签,新增分享意图过滤器:
<activity android:name=".MainActivity" <!-- 原有activity的其他配置属性全部保留,不要删除 --> > <!-- 原有默认的启动intent-filter保留,不要删除 --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <!-- 新增这段分享意图过滤器 --> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <!-- 支持接收纯文本/链接,适配Youtube分享场景 --> <data android:mimeType="text/plain" /> <!-- 如需支持接收图片,可额外添加 <data android:mimeType="image/*" /> --> </intent-filter> </activity>
Java代码修改(仅需修改MainActivity文件)
文件路径为 android/app/src/main/java/[你的应用包名路径]/MainActivity.java,修改内容如下:
- 首先确认文件顶部已导入所需依赖,没有的话补上即可:
import android.content.Intent; import android.os.Bundle; import com.facebook.react.ReactActivity;
- 然后在MainActivity类中新增对应方法,原有默认生成的
getMainComponentName方法无需修改:
public class MainActivity extends ReactActivity { // 原有默认方法,直接保留即可 @Override protected String getMainComponentName() { return "你的RN项目名称"; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 处理应用未启动时,从分享入口打开的场景 handleShareIntent(getIntent()); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); // 处理应用已在后台运行时,从分享入口打开的场景 handleShareIntent(intent); } private void handleShareIntent(Intent intent) { String action = intent.getAction(); String type = intent.getType(); if (Intent.ACTION_SEND.equals(action) && type != null) { if ("text/plain".equals(type)) { // 如需获取分享的内容(比如Youtube链接),可以从这里取,不需要的话直接留空即可 String sharedContent = intent.getStringExtra(Intent.EXTRA_TEXT); // 拿到内容后如果需要传给RN侧,可以通过事件发射或者本地存储的方式传递 } } } }
补充说明
- 如果你仅需要应用出现在系统分享列表,不需要处理用户分享的具体内容,
handleShareIntent方法内部可以全部留空,不影响功能 - 修改完成后重新编译安卓项目即可生效
内容的提问来源于stack exchange,提问作者phoenix009
相关产品推荐
相关产品推荐

