Android:React Native如何从另一个应用程序打开应用程序?

3

我想从我的应用程序中打开另一个应用程序 (https://play.google.com/store/apps/details?id=com.inova.velocity)。但是,所有教程都只将 URL 重定向到 Play 商店。(我找到了一个 GitHub 链接 (https://github.com/FiberJW/react-native-app-link),它仅适用于 iOS 打开应用程序,但对于 Android,它会重定向到 Play 商店)。有没有办法解决这个问题?

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));

在你运行代码时,安卓设备中是否已经安装了该应用? - Sateesh Yemireddi
@Sateesh 是的..我的任务是如果应用已安装,则打开应用,否则打开Play商店。 - ios newbie
@VinayakB 不太清楚哦,我看到一个例子,我们可以像打开WhatsApp和FB一样打开应用程序。同样地,我们不能打开这个应用程序吗? - ios newbie
需要使用深度链接吗?我认为我们需要深度链接当我们需要打开特殊的活动(例如:发送消息)。否则我们可以打开任何应用程序,对吧?我已经在本机Android上尝试过了...但我不知道如何在React中实现? - ios newbie
这个问题有什么更新吗?我被卡住了,请帮忙。 - Sagar
显示剩余6条评论
2个回答

2

是的,你的代码是正确的。但你使用了Play Store的 URL,而不是 Schema URL。你需要设置 SchemaUrl,可以从相关应用程序开发者那里获取。如果该应用程序没有设置 Schema 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');
           );


我们如何找到这个SchemaUrl? - Dulaj Madusanka
我们怎样才能找到这个SchemaUrl? - undefined
SchemaUrl需要在相关应用程序中进行配置。 - Manojkanth
SchemaUrl需要在相关应用程序中进行配置。 - undefined
可以请分享一些与这个SchemaUrl相关的文档吗? - Dulaj Madusanka
请分享一些与此SchemaUrl相关的文档。 - undefined

-1

使用react-native-send-intent模块,您可以执行以下操作
SendIntentAndroid.openApp('packagename').then((wasOpened) => {}); 其中'packagename'是您想要打开的任何应用程序包名称。

例如 SendIntentAndroid.openApp('com.inova.velocity').then((wasOpened) => {});

wasOpened是一个布尔承诺,告诉您应用程序是否已经打开


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接