You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Share在Android中res.message返回undefined的解决问询

解决react-native-share在Android上无法获取分享选项返回值的问题

我遇到过同样的问题,以下是可行的解决方法:

1. 优先升级到最新版react-native-share

旧版本的Android端实现未处理分享选项的返回逻辑,先执行升级命令:

npm install react-native-share@latest
# 或
yarn add react-native-share@latest

升级后重新编译Android项目,再测试res.message是否能返回选中的分享组件标识(比如com.android.email/.activity.MessageCompose这类格式)。

2. 自定义Android原生模块扩展(升级无效时)

如果升级后仍无法获取,需要修改react-native-share的Android原生代码来返回选中的分享组件:

  • 找到项目中node_modules/react-native-share/android/src/main/java/com/reactlibrary/RNShareModule.java文件
  • 定位到onActivityResult方法,在处理RESULT_OK的分支中,添加获取选中组件的逻辑:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == SHARE_REQUEST_CODE && promise != null) {
    if (resultCode == Activity.RESULT_OK) {
      WritableNativeMap result = new WritableNativeMap();
      // 获取选中的分享组件
      ComponentName chosenComponent = data.getParcelableExtra(Intent.EXTRA_CHOSEN_COMPONENT);
      if (chosenComponent != null) {
        result.putString("message", chosenComponent.flattenToString());
      } else {
        result.putString("message", "unknown");
      }
      promise.resolve(result);
    } else if (resultCode == Activity.RESULT_CANCELED) {
      promise.reject("E_CANCELED", "Share canceled");
    } else {
      promise.reject("E_FAILED", "Share failed");
    }
    promise = null;
  }
}
  • 注意:直接修改node_modules中的代码会在依赖更新时被覆盖,建议fork官方库并维护自定义版本,或者将该模块复制到本地Android项目目录中作为本地依赖引用。

3. 无需额外修改AndroidManifest.xml

这个问题不需要调整AndroidManifest的权限或配置,默认的Manifest设置即可满足需求。

内容的提问来源于stack exchange,提问作者Allison Lin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:20:25