android:反应原生从另一个应用程序打开一个应用程序?
Posted
技术标签:
【中文标题】android:反应原生从另一个应用程序打开一个应用程序?【英文标题】:android: React native open an app from another app? 【发布时间】:2018-10-18 10:39:55 【问题描述】:我正在尝试从我的应用打开另一个应用 (https://play.google.com/store/apps/details?id=com.inova.velocity)。但是所有教程都只是将 url 重定向到 playstore。(我找到了一个 github 链接(https://github.com/FiberJW/react-native-app-link),它只打开了 ios 的应用程序,但对于 android,它重定向到了 playstore)。有什么办法可以解决这个问题吗?
Linking.canOpenURL('market://details?id=com.inova.velocity')
.then((canOpen) =>
if (canOpen)
console.log('open app');
return Linking.openURL('market://details?id=com.inova.velocity')
;
).catch(err => console.log('An error occurred', err));
【问题讨论】:
在您运行代码时,该应用程序是否已安装在 android 设备中? @Sateesh yup.. 我的任务是必须打开已安装的应用程序,或者打开 Playstore。 com.inova.velocity 是你开发的吗? @VinayakB No.. 它已下载。 com.inova.velocity 是否有任何与应用相关的深层链接? 【参考方案1】:是的,您的代码是正确的。但是您使用的是 playstore url,而不是 schema url。您必须设置 schemaUrl,您可以从相关的应用程序开发人员那里获得它。如果没有为该应用设置架构 URL,则无法打开它。获得 SchemaUrl 后,您可以使用您的代码。如下所示。
Linking.canOpenURL(SchemaUrl).then(supported =>
if (supported)
console.log('accepted');
return Linking.openURL(SchemaUrl);
else
console.log('an error occured');
).catch(
err => console.log('an error occured');
);
【讨论】:
【参考方案2】:使用react-native-send-intent module,你可以做到 SendIntentAndroid.openApp('packagename').then((wasOpened) => );您的包名称是您要打开的任何应用程序包名称。
例如 SendIntentAndroid.openApp('com.inova.velocity').then((wasOpened) => );
wasOpened 是一个布尔诺言,告诉您应用程序是否已打开
【讨论】:
以上是关于android:反应原生从另一个应用程序打开一个应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
当Android Textinput autoFocus为true时反应本机键盘不弹出