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时反应本机键盘不弹出

EMFile:打开的文件太多,观看 - 构建 Release 反应原生 iOS 应用程序

如何从另一个组件显示反应引导模式[重复]

反应原生无法从蜂窝网络找到位置