我正在尝试React-Native-Linking
和react-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");
}
});
};
如果有什么解决办法,请给我。
答案 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')