是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!