WebView 中的相关方法大解析

Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装成了WebView组件。
写代码时要注意WebView中的一些配置和属性方法,方能灵活运用WebView。

 我感觉一是要对WebSetting的配置,比如说要支持缩放,javascript等等,还有就是要添加WebViewChromeClient 和WebViewClient 对象,添加诸如对进度条和链接按钮等的操作,细细学习,区分两者的不同。


1) AndroidManifest.xml中必须使用许可"android.permission.INTERNET ",否则会出Web page not available错误:

 

2) 如果访问的页面中有Javascript,则webview必须设置支持Javascript:

Java代码 
  1. webview.getSettings().setJavaScriptEnabled( true );  
[java]  view plain copy
  1. webview.getSettings().setJavaScriptEnabled(true);  

   否则显示空白页面。

3) 如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象:

Java代码
  1. mWebView.setWebViewClient(new  WebViewClient(){   
  2.     public  boolean  shouldOverrideUrlLoading(WebView  view, String url) {   
  3.         view.loadUrl(url);   
  4.         return  true ;   
  5.     }   
  6. }); 
上述方法告诉系统由我这个WebViewClient处理这个Intent,我来加载URL。点击一个链接的Intent是向上冒泡 的,shouldOverrideUrlLoading方法return true表示我加载后这个Intent就消费了,不再向上冒泡了。

 

4) 如果不做任何处理,在显示你的Brower UI时,点击系统“Back”键,整个Browser会作为一个整体“Back"到其他Activity中,而不是希望的在Browser的历史页面中 Back。如果希望实现在历史页面中Back,需要在当前Activity中处理并消费掉该Back事件:

Java代码 
  1. public  boolean  onKeyDown(int  keyCode, KeyEvent event) {   
  2.     if  ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack() ) {   
  3.         mWebView.goBack();   
  4.         return  true ;   
  5.     }   
  6.     return  super .onKeyDown(keyCode, event);   
5)  loadUrl应该放在setWebViewClient之后

6) onBackPressed是在没有browserHistory的情况下响应的,当然是onKeyDown()被先截获到

对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写 

onBackPressed 方法即可,代码如下

Java代码

@Override
1、public  void onBackPressed() {
2、     // 这里处理逻辑代码,该方法仅适用于2.0或更高版本的sdk,而且mWebView.canGoBack() is false 
3、    return  ;
4、}



你可能感兴趣的:(JavaScript,java,android,url,webkit,browser)