使用自定义网址深度链接(使用自定义网址React native(Andorid))在另一个应用程序内打开一个应用程序

时间:2018-07-05 10:04:16

标签: android reactjs react-native react-native-android deep-linking

是React-native的新手。我们正在尝试实现一个本机应用程序,在该应用程序中将提供一个按钮,以便每当用户单击该按钮时,如果未安装该应用程序,则他将被指示去玩商店。如果按钮上已经安装了应用程序,则他应该能够打开当前未​​发生的应用程序。

  

AndroidManifest.xml

 <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
 <intent-filter>
    <action android:name="android.intent.action.VIEW"></action>
    <category android:name="android.intent.category.DEFAULT">
  </category>
    <category android:name="android.intent.category.BROWSABLE">
  </category>
    <data  android:scheme="whatsapp"></data>
 </intent-filter>

上面是我们在AndroidManifest.xml文件中修改过的代码。

  

App.js   我们有一个称为 handle()的方法,它将处理事件

 handle(){
 let appName = 'whatsapp';
 let url = 'https://play.google.com/store/apps/details?id=com.whatsapp';
 Linking.openURL(url).catch(err => {
  if (err.code === 'EUNSPECIFIED') {
        if (Platform.OS === 'android') {
          Linking.openURL(
            url
          );
        }
      } else {
        throw new Error(`Could not open ${appname}. ${err.toString()}`);
      }
    });}

上面的代码对于在Playstore中打开应用程序正常工作。但是,如果该应用程序已经安装在设备中,则在其按钮上单击,它应该使用自定义网址直接打开该应用程序。

当我们在自定义网址架构中使用 canOpenURL()时,它什么也不做。当我将Custom Url模式与 openURL()一起使用时,它警告我说没有在 android.intent.action.VIEW 中提供或定义任何操作,但这是提供。

const url = 'whatsapp://';
   Linking.canOpenURL(url).then(supported => {
    if (!supported) {
      console.log('Can\'t handle url: ' + url);
 }else {
      return Linking.openURL(url);
}
 }).catch(err => console.error('An error occurred', err));

请帮助我们。感谢Advace!

0 个答案:

没有答案