如何从另一个应用程序本机android打开一个应用程序?

时间:2019-11-15 12:27:04

标签: react-native react-native-android react-native-ios

我正在尝试React-Native-Linkingreact-native-deep-linking,但是不起作用。

以下代码仅对于Skype成功运行,但是如果您打开其他应用程序则无法运行。

const checkapp = () => {
  let url = "skype://app";
  Linking.openURL(url).catch(err => {
    if (err.code === "EUNSPECIFIED") {
      if (Platform.OS === "android") {
        AppInstalledChecker.isAppInstalled("skype").then(isInstalled => {
          if (isInstalled) {
            Linking.openURL("url");
          } else {
            console.log("is installed false");
            Linking.openURL(
              "https://play.google.com/store/apps/details?id=com.skype.raider&hl=en"
            ).catch(err => {
              console.log(err);
            });
          }
        });
      }
    } else {
      console.log("Platform Is Ios");
    }
  });
};

如果有什么解决办法,请给我。

1 个答案:

答案 0 :(得分:1)

  

100%使用react-native-send-intent来打开另一个应用程序中的所有应用程序。

     

对本机Android模块进行反应,以使用Android的Intent操作打开第三方应用程序。

安装 npm install react-native-send-intent --save

注册模块> = 0.29(在MainApplication.java中)仅添加2行

import com.burnweb.rnsendintent.RNSendIntentPackage;  // <--- import in MainApllication.java

public class MainApplication extends Application implements ReactApplication {
  ......

  @Override
  protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
        new MainReactPackage(),
        new RNSendIntentPackage()); // <------ add this line to your MainApplication 
  class
  }

  ......

  }

示例/以您的本机代码打开应用

 SendIntentAndroid.isAppInstalled('com.medlife.customer').then((isInstalled) => {
            if (isInstalled) {
                SendIntentAndroid.openApp('com.medlife.customer').then((wasOpened) => {
                });
                console.log("is installed true");
            }
            else {
                Linking.openURL('https://play.google.com/store/apps/details?id=com.medlife.customer&hl=en').catch(err => {
                    console.log(err)
                })
            }
        });
  

如果您需要打开另一个应用程序,那么我正在从我的应用程序中打开第三方Medlife应用程序,然后仅在pacakage name中更改SendIntentAndroid.openApp('com.medlife.customer')

react-native-send-intent git hub example here