Android端react-native-share调用Share.open返回message为undefined问题
问题根因
react-native-share 7.1.1版本Android端原生实现逻辑与iOS端不统一,且Android系统原生隐式分享意图(ACTION_SEND)本身没有强制第三方应用分享完成后回跳的规范,导致两个问题出现。
修复方案
1. message字段返回undefined修复
该问题是7.1.1版本已知缺陷,有两种修复路径:
- 升级依赖到7.2.0及以上版本,官方已在后续版本兼容了Android端包名返回逻辑,执行命令即可完成升级:
npm install react-native-share@^7.2.0 --save # 升级后清理Android构建缓存 cd android && ./gradlew clean
- 若不便升级版本,可手动修改原生代码:找到Android项目下
com.horcrux.share.ShareModule文件,在onActivityResult方法的成功回调逻辑中,将用户选中的分享应用包名赋值给返回参数的message字段即可。
临时兼容方案:若不需要区分分享到的具体应用,可直接在业务代码中仅通过success字段判断分享结果,忽略message字段校验。
2. 分享完成后自动回跳原应用实现
Android系统原生隐式分享没有要求第三方应用分享完成后主动回跳,因此需要主动调整调用逻辑:
- 调用
Share.open时添加forceDialog: true参数,强制使用系统分享选择器,部分场景下可触发回跳逻辑 - 若需要强一致的回跳效果,可修改原生分享代码,给分享意图添加
Intent.FLAG_ACTIVITY_CLEAR_TOP和Intent.FLAG_ACTIVITY_NEW_TASK标记,或者在分享触发后延时1-2秒主动拉起当前应用的栈顶Activity,该方案存在少量第三方应用适配风险,需要针对性测试。
内容的提问来源于stack exchange,提问作者Hiren Tariwala
相关产品推荐
相关产品推荐

