Android—–WebView使用

大部分内容为 上整理其它高人的帖子,现只作整理,用于查看:

在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。 

什么是webkit 

WebKit是Mac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。 同时,WebKit也是Mac OS X的Safari 页浏览器的基础。WebKit是一个开源项目,主要由KDE的KHTML修改而来并且包含了一些来自苹果公司的一些组件。 

传统上,WebKit包含一个 页引擎WebCore和一个脚本引擎JavaScriptCore,它们分别对应的是KDE的KHTML和KJS。不过, 随着JavaScript引擎的独立性越来越强,现在WebKit和WebCore已经基本上混用不分(例如Google Chrome和Maxthon 3采用V8引擎,却仍然宣称自己是WebKit内核)。 

这里我们初步体验一下在android是使用webview浏览 页,在SDK的Dev Guide中有一个WebView的简单例子 。 

在开发过程中应该注意几点: 
    1.AndroidManifest.xml中必须使用许可”android.permission.INTERNET”,否则会出Web page not available错误。
    2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
        webview.getSettings().setJavaScriptEnabled(true);  
    3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。

 

  1. mWebView.setWebViewClient(new WebViewClient(){       
  2.                     public boolean shouldOverrideUrlLoading(WebView view, String url) {       
  3.                         view.loadUrl(url);       
  4.                         return true;       
  5.                     }       
  6.         });   

 

 

 4.如果不做任何处理,浏览 页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。

 

  1.     
  2.     }     

 

 

下一步让我们来了解一下android中webview是如何支持javascripte自定义对象的,在w3c标准中js有 window,history,document等标准对象,同样我们可以在开发浏览器时自己定义我们的对象调用手机系统功能来处理,这样使用js就可以 为所欲为了。

  看一个实例:

 

view plain copy to clipboard print

  1. public class WebViewDemo extends Activity {        
  2.     private WebView mWebView;       
  3.     private Handler mHandler = new Handler();       
  4.        
  5.     public void onCreate(Bundle icicle) {       
  6.         super.onCreate(icicle);       
  7.         setContentView(R.layout.webviewdemo);       
  8.         mWebView = (WebView) findViewById(R.id.webview);       
  9.         WebSettings webSettings = mWebView.getSettings();       
  10.         webSettings.setJavaScriptEnabled(true);       
  11.         mWebView.addJavascriptInterface(new Object() {
  12.             @JavascriptInterface      
  13.             public 

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2014年10月23日
下一篇 2014年10月23日

相关推荐