如何从反应原生应用程序打开外部应用程序?

Posted

技术标签:

【中文标题】如何从反应原生应用程序打开外部应用程序?【英文标题】:How to open an external app from react native app? 【发布时间】:2017-03-01 15:50:35 【问题描述】:

在我的 React Native 应用程序中触摸按钮时是否可以打开外部应用程序? 具体来说,我想在触摸按钮时打开 Whatsapp。我该怎么做?

谢谢!

【问题讨论】:

你试过让非社交应用在按钮点击时打开吗? 【参考方案1】:

你必须使用React Native Linking API:

Linking.openURL('whatsapp://app')

另外,看看How can I integrate WhatsApp into my app

【讨论】:

我正在尝试这段代码,但出现异常Possible Unhandled Promise Rejection Error: Could not open URL 'whatsapp://app': No Activity found to handle Intent act=android.intent.action.VIEW dat=whatsapp://app flg=0x10000000 我找这个已经很久了:有没有什么地方可以看到应用程序的所有前缀/slug? (fb,linkedin,whatsapp) @iuliu.net ...我也是..你在这方面有什么发现吗? 不幸的是仍然没有。 请注意,此示例使用 ios 特定的通用链接。对于 Android,您可以使用 Android Studio > Build > Analyze APK 查看 APK 的 AndroidManifest.XML 文件以查看 Intent 列表。【参考方案2】:

之前用过,

Linking.openURL('whatsapp://app');

但后来网址改成如下,我们也可以添加下图的电话和文字查询参数,

Linking.openURL(`whatsapp://send?phone=$whatsappNo&text=$whatsappMsg`);

【讨论】:

我正在寻找一个没有deep link URL的随机应用程序【参考方案3】:

您可以尝试使用应用程序 API 中的参数。例如,在我的情况下,我必须在 IOS 上打开地图并开始从 A 点到 B 点的导航。所以我查看了 HERE 的文档,并使用了导航链接: “http://maps.apple.com/?saddr=Cupertino&daddr=San+Francisco”创建查询以打开应用程序:

 <TouchableOpacity onPress=() => Linking.openURL('maps://app?saddr=Cupertino&San+Francisco')>
        <Text>Navigate</Text>
 </TouchableOpacity>

您也可以使用坐标,如 lat 和 long :

maps://app?saddr=Cupertino&S100.123+101.222

【讨论】:

适用于安卓系统?我该怎么办? @DevAS 对于 Android,您可以使用 Android Studio > Build > Analyze APK 查看 APK 的 AndroidManifest.XML 文件以查看 Intent 列表并相应地构建您的 URL。【参考方案4】:

我想在我正在为 android 开发的 react-native 应用程序中单击简单按钮打开 whatsapp。

我对此进行了很多搜索,但没有找到任何完美的解决方案。虽然我找到了一个第三方库“npm i -S react-native-app-link”。

这个库中的描述正是我想要做的。但无法弄清楚。如果你们中的任何一个可以帮助它,这对我来说将是一个很大的帮助。

【讨论】:

得到了解决方案。现在外部应用程序正在我的 react-native android 应用程序上打开。使用的库“react-native-app-link” 你能提供一些我卡得很厉害的样本吗?请检查***.com/questions/58856557/…【参考方案5】:

React Native 不支持 'whatsapp://' 方案。

仅适用于此方案:

邮寄; 电话; 短信; http / https;

一种替代方法是使用 Whatsapp 通用链接React Native Linking

https://wa.me/<number>

https://reactnative.dev/docs/linking.html#open-links-and-deep-links-universal-links

【讨论】:

Aniruddha 的上述回答确实有效。链接.openURL(whatsapp://send?phone=$whatsappNo&amp;text=$whatsappMsg);用国家代码尝试了这个号码,除了按下 Whatsapp 上的发送按钮之外,它做了所有事情。【参考方案6】:

您可以使用此软件包https://github.com/khorark/rn-openapp 在安卓手机上打开其他应用程序。 只需要知道应用程序ID。让他在image 上玩市场。

【讨论】:

欢迎来到 SO。虽然链接可能会回答问题,但最好在此处添加综合详细信息,以便即使将来链接断开,答案也会脱颖而出。 ios 的任何替代品以及@arkadiy ?【参考方案7】:

将此包https://github.com/danilrafiqi/react-native-open-application 与此https://github.com/FiberJW/react-native-app-link 一起使用

所以如果应用程序已经安装,立即打开它,但如果没有安装它会直接进入google play store

const onPresss = () => 
OpenApplication.openApplication('com.dev47apps.droidcam')
  .then(() => )
  .catch(err => 
    AppLink.maybeOpenURL('droidcam://', 
      appName: 'DroidCam',
      appStoreId: '',
      appStoreLocale: '',
      playStoreId: 'com.dev47apps.droidcam',
    )
      .then(() => )
      .catch(err => );
  );
;

【讨论】:

以上是关于如何从反应原生应用程序打开外部应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何将文件从 iOS 反应原生应用程序保存到 Files 文件夹

android:反应原生从另一个应用程序打开一个应用程序?

如何知道我的应用何时聚焦或不聚焦——反应原生?

不能要求外部反应原生组件

如何通过深度链接重新启动反应原生应用程序

如何从反应原生应用程序制作 .ipa 文件