我开发了一组存储在服务器中的 .html 页面。 我的 android 应用程序使用带有以下内容的 WebView :setWebChromeClient 加载这些页面。 minSdkVersion 19 targetSdk版本24
问题: 每次我需要使用 .html 页面中的链接加载新页面时,新页面都会在外部浏览器中打开。
网址覆盖 当我们使用 setWebViewClient() 时,我知道 shouldOverrideUrlLoading() 方法。 但不幸的是我不能使用普通的 webview。我需要使用 WebChromeClient() 因为某些功能只适用于此功能。 (如输入文件)
我的疑问是... 如何覆盖我的 URL 以强制它们加载到 webChromeClient 中? 我试过了,但没有成功:
webView.setWebChromeClient(new WebChromeClient() {
// (...)
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
最佳答案
您可以使用以下代码来实现这一点。
WebView web = (WebView)findViewById(R.id.web);
WebSettings webSettings = web.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportMultipleWindows(true); // This forces ChromeClient enabled.
web.setWebChromeClient(new WebChromeClient(){
@Override
public void onReceivedTitle(WebView view, String title) {
getWindow().setTitle(title); //Set Activity tile to page title.
}
});
web.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
});
关于android - 使用 WebChromeClient 防止在外部浏览器中打开链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43107070/