如何从反应原生应用程序打开外部应用程序?
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&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 => );
);
;
【讨论】:
以上是关于如何从反应原生应用程序打开外部应用程序?的主要内容,如果未能解决你的问题,请参考以下文章