我已经搜索并阅读了很多帖子,但无法弄清楚如何做到这一点在我的代码。
我想在我的应用程序使用地理定位和需要查看webChromeClient在webViewClient至极我现在使用的HTML文件和链接不会留在同一个视图代替。
当我将其更改为webChromeClient的HTML链接,喜欢<a href="http://url/file.php?q=123"
突然打开浏览器!
我怎样才能避免这种情况?
myWebView = new WebView(this);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.getSettings().setLoadWithOverviewMode(true);
myWebView.getSettings().setUseWideViewPort(true);
myWebView.getSettings().setGeolocationEnabled(true);
myWebView.setWebChromeClient(new WebChromeClient() {
public void onGeolocationPermissionsShowPrompt(String origin, android.webkit.GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false); }
});
myWebView.loadUrl("file:///android_asset/HTML/index.html");
setContentView(myWebView);
WebChromeClient不包含shouldOverrideUrlLoading法,WebViewClient一样。 还记得“的WebView”可以,如果不指定在同一时间同时使用WebViewClient和WebChromeClient。 该WebViewClient增加你无法使用方法,没有分配(保持在web视图导航)客户端。 与WebChromeClient同样有它可以使用特定的方法(获得负载例如网页标题)。
所以,你可以建立你这样的代码:
WebView web = (WebView)findViewById(R.id.web);
WebSettings webSettings = web.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setGeolocationEnabled(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;
}
});
我能够在除了WebChromeClient设定虚拟WebViewClient来解决这个问题。 不知道为什么,但是当我拿出这条线的网页开始在浏览器再次打开。
mBrowser.setWebViewClient(new WebViewClient());
要打开浏览器链接,您可以使用intent
在shouldOverrideUrlLoading
方法来启动URL在浏览器与使用您的webview
来处理的链接:
webView.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url != null && url.startsWith("http://")) {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
} else {
return false;
}
}
}
如果你想在web视图使用加载:
WebViewClient yourWebClient = new WebViewClient()
{
// Override page so it's load on my view only
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
// This line we let me load only pages with an anchor tag
if ( url.contains("url") == true )
//Load new URL Don't override URL Link
return false;
// Return true to override url loading (In this case do nothing).
return true;
}
};