我开发了一小组.html页面,存储在服务器中。 我的Android应用程序使用webview: setWebChromeClient 加载这些页面。 minSdkVersion 19 targetSdkVersion 24
问题: 每次我需要加载新页面时,使用.html页面中的链接,新页面将在外部浏览器中打开。
网址覆盖 当我们使用setWebViewClient()时,我知道shouldOverrideUrlLoading()方法。 但不幸的是我不能使用正常的webview。我需要使用WebChromeClient(),因为某些功能只适用于此功能。 (与输入文件一样)
我怀疑是...... 如何覆盖我的URL以强制它们加载到webChromeClient中? 我试过这个但没有运气:
webView.setWebChromeClient(new WebChromeClient() {
// (...)
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
答案 0 :(得分:1)
您可以使用以下代码来实现此目的。
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;
}
});
答案 1 :(得分:0)
我在使用 WebChromeClient
类的 Android 应用程序中使用嵌入式移动网络应用程序,并且不想摆弄重新编译 APK。
在寻找最简单的 header();
解决方案时(因为移动网络应用程序是在 php 中),我发现使用:
header("Location: url.php", TRUE, 307);
是一种无需重新编译 Android 应用的快速修复解决方案。
这允许用户在应用内重定向,而无需从我的应用外部调用网络浏览器。
Here 是 Arindam Nayak 的答案的链接,我从那里得到了这个想法。