带你解决WebView里的常见问题

通常我们在自己开发的APP中打开网页无非两种方法:一是跳转到系统自带的浏览器,二是使用WebView控件加载页面。使用WebView控件的好处就是可以通过各种api接口来定制各种行为,常用的几个设置地方为WebSettings、JavaScriptInterface、WebViewClient和WebChromeClient。平时出现的问题都可以通过修改这些设置来解决。

WebView.jpg

使用了WebView还是跳转到了系统自带的浏览器?

很简单的解决方法,为你的webview设置一个新的WebViewClient。

webView.setWebViewClient(newWebViewClient(){

OverridepublicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){view.loadUrl(url);returntrue;}});

//或者直接添加,效果是一样的webView.setWebViewClient(newWebViewClient());

获取网页的标题和图标

通过WebChromeClient可以获取到这些信息。

webView.setWebChromeClient(newWebChromeClient(){

OverridepublicvoidonReceivedTitle(WebViewview,Stringtitle){super.onReceivedTitle(view,title);setTitle(title);}

OverridepublicvoidonReceivedIcon(WebViewview,Bitmapicon){super.onReceivedIcon(view,icon);setIcon(icon);}});

但是,这里有个问题,当通过webView.goBack()方式返回上一级Web页面的时候不会触发这个方法,因此会导致标题无法跟随历史记录返回上一级页面。所以需要在onPageFinished()中对界面标题重新设置。

webView.setWebViewClient(newWebViewClient(){

OverridepublicvoidonPageFinished(WebViewview,Stringurl){super.onPageFinished(view,url);setTitle(String.valueOf(view.getTitle()));}});

返回键实现网页的后退键

在WebView中可以通过goBack()方法后退到历史记录的上一项。

//在Actvity中监听返回键按钮

OverridepublicvoidonBackPressed(){if(webView.canGoBack())webView.goBack();elsesuper.onBackPressed();}

设置WebView的header

在WebView的loadUrl()方法中传入Header参数即可。

publicvoidloadURLWithHTTPHeaders(){finalStringurl="







































北京治疗白癜风哪里好
白癜风治疗要花多少钱



转载请注明:http://www.guyukameng.com/php/8317.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了