我有一个加载外部网址的网页视图。此站点中有一个链接,用于在单击时尝试在用户设备上启动特定应用程序。虽然它不是启动应用程序,但它会崩溃webview。
我在Chrome中测试了这个相同的网站,它将按预期工作,这意味着它启动了应用。
如何在webview中模仿相同的操作?
答案 0 :(得分:0)
如果您正在使用Chrome浏览器启动应用程序,那么WebViews默认情况下不会处理自定义URI方案。
您必须覆盖WebViewClient.shouldOverrideUrlLoading()并测试URL是否使用您的URI方案,启动您的应用并返回true(如果匹配),否则返回false。
WebView webView = new WebView(context);
webView.setWebViewClient(new WebViewClient() {
@Override
@TargetApi(Build.VERSION_CODES.N)
public boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request) {
if (request.getUrl().getScheme().startsWith("myscheme")) {
//launch app
return true;
} else {
return false;
}
}
@Override
public boolean shouldOverrideUrlLoading (WebView view, String url) {
if (Uri.parse(url).getScheme().startsWith("myscheme")) {
//launch app
return true;
} else {
return false;
}
}
}
);