`
yangguangfu
  • 浏览: 1539769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

在移动互联网的争夺日趋白热化,各个互联网巨头纷纷推出自己的手机浏览器,浏览器市场的争夺从桌面转移到了手机。

在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对象。[code]mWebView.setWebViewClient(new WebViewClient(){  
                    public boolean shouldOverrideUrlLoading(WebView view, String url) {  
                        view.loadUrl(url);  
                        return true;  
                    }  
        });[/code]4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。[code]public boolean onKeyDown(int keyCode, KeyEvent event) {  
                    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {  
                        mWebView.goBack();  
                               return true;  
                    }  
                    return super.onKeyDown(keyCode, event);  
                }  [/code]下一步让我们来了解一下android中webview是如何支持javascripte自定义对象的,在w3c标准中js有 window,history,document等标准对象,同样我们可以在开发浏览器时自己定义我们的对象调用手机系统功能来处理,这样使用js就可以 为所欲为了。

看一个实例:[code]public class WebViewDemo extends Activity {  

    private WebView mWebView;  
    private Handler mHandler = new Handler();  
  
    public void onCreate(Bundle icicle) {  
        super.onCreate(icicle);  
        setContentView(R.layout.webviewdemo);  
        mWebView = (WebView) findViewById(R.id.webview);  
        WebSettings webSettings = mWebView.getSettings();  
        webSettings.setJavaScriptEnabled(true);  
        mWebView.addJavascriptInterface(new Object() {  
            public void clickOnAndroid() {  
                mHandler.post(new Runnable() {  
                    public void run() {  
                        mWebView.loadUrl("javascript:wave()");  
                    }  
                });  
            }  
        }, "demo");  
        mWebView.loadUrl("file:///android_asset/demo.html");  
    }  
}  [/code]我们看addJavascriptInterface(Object obj,String interfaceName)这个方法,该方法将一个java对象绑定到一个javascript对象中,javascript对象名就是 interfaceName(demo),作用域是Global。这样初始化webview后,在webview加载的页面中就可以直接通过 javascript:window.demo访问到绑定的java对象了。来看看在html中是怎样调用的。[code]<html>  
        <script language="javascript">  
                function wave() {  
                    document.getElementById("droid").src="android_waving.png";  
                }  
        </script>  
        <body>  
            <a onClick="window.demo.clickOnAndroid()">  
                                <img id="droid" src="android_normal.png"/><br>  
                                Click me!  
            </a>  
        </body>  
</html>  
[/code]这样在javascript中就可以调用java对象的clickOnAndroid()方法了,同样我们可以在此对象中定义很多方法(比 如发短信,调用联系人列表等手机系统功能。),这里wave()方法是java中调用javascript的例子。

这里还有几个知识点:


1)为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"

2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用 Handler的目的。

页: [1]
分享到:
评论

相关推荐

    androidWebView学习小结

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。WebView基于Webkit渲染引擎,这使得它在性能和兼容性上与Safari和Chrome等浏览器保持一致。在本文中,我们...

    android webview学习记录

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。本文将深入探讨WebView的相关知识点,包括它的基本使用、设置、以及与JavaScript的交互。 首先,使用...

    android webview 学习资料

    WebView的学习对于Android开发者来说是必不可少的。以下是对WebView相关知识点的详细阐述: 1. **WebView基本使用**:WebView是Android SDK中的一个类,通过继承自ViewGroup,可以展示HTML、CSS和JavaScript等Web...

    androidWebView学习.pdf

    在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用内部展示网页内容,无需跳转到外部浏览器。WebView基于WebKit渲染引擎,与Safari和Chrome相同,因此它能提供高质量的网页渲染效果。在本文中,...

    Android webview调用摄像头扫描二维码

    本文将详细讲解如何在Android Webview中调用摄像头进行二维码扫描,并结合ZXing(Zebra Crossing)解析包进行二维码的解析。 首先,让我们了解Android Webview的基本用法。Webview是Android SDK提供的一种视图组件...

    Android webview加载网页.zip

    通过学习和实践这些知识点,开发者可以创建出一个功能完善的WebView应用,让用户在不离开应用的情况下浏览网页,提升用户体验。对于“8.webview加载网页”这个文件,可能是具体实现这些功能的代码示例,进一步深入...

    Android-WebSocket-WebView_DEMO_websocket_androidwebview_

    这个项目对于理解WebSocket与Android WebView的结合使用具有重要的学习价值。 首先,WebSocket API在Android中的实现通常依赖于第三方库,如`android-async-http-websocket`或`java-websocket`等。这些库提供了创建...

    android webview开发应用

    这个“android webview开发应用”显然提供了相关的源代码,为开发者提供了一个学习和研究的实例。以下是一些关于Android WebView开发的关键知识点: 1. **WebView介绍**:WebView是Android SDK中的一个类,它继承自...

    android webview 加载网页 样例

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。本文将深入探讨如何使用Android WebView加载网页,包括基本使用、配置设置、与JavaScript交互以及处理网络...

    Android实现WebView懒加载

    通过分析和学习这个示例,你可以更好地理解和实践WebView的懒加载技术。 总之,WebView懒加载是提高Android应用性能和用户体验的重要手段。通过合理的设计和优化,我们可以让应用更加流畅,减少不必要的等待,提升...

    Android WebViewJS应用源码.zip

    【Android WebViewJS应用源码.zip】是一个包含有关在Android应用程序中使用WebView与JavaScript交互的源码项目。...对于想要提升Android应用功能和用户体验的开发者来说,这是一个很好的学习资源。

    android 8.0 webview 拍照预览、二维码扫描

    android 8.0 webview 拍照、预览、二维码扫描比较完整的例子,对于权限检查控制,有比较完善的提示写法。可以下载后,直接在android studid上运行,编译版本和target版本均是SDK android 8.0,最低版本设置成了...

    Android WebView 之Helloworld

    在深入学习WebView时,了解`WebViewClient`和`WebChromeClient`的作用至关重要。`WebViewClient`用于控制页面加载的行为,如拦截URL、处理错误等;`WebChromeClient`则提供了与用户界面相关的功能,如显示加载进度条...

    android webview demo

    在"android webview demo"这个项目中,开发者可以学习到如何将WebView集成到Android应用中,如何与用户界面元素交互,以及如何定制和优化WebView的行为。通过对该项目的实践,可以加深对Android应用开发的理解,特别...

    android webview jbox2d 源代码 项目源码

    在这个项目源码中,你可以学习到如何在Android上集成Webview与JBox2D,以及如何利用它们构建一个交互式的物理模拟应用。通过对源代码的深入研究,可以掌握这两项技术的结合使用,为你的Android开发带来更多的可能性...

    Android代码-Android-X5WebView基本封装

    Android-X5WebView基本封装和使用 通过OkHttp拦截器、自定义CookieJar有效完成客户端与H5端的Cookie同步管理 监听WebView的加载进度 滚动条的设置(隐藏或者显示,内侧显示还是外侧显示) 优化X5WebView的预加载问题...

    AndroidWebView

    `WebView`的使用相对简单,适合初学者学习。 ### 1. `WebView`的基本使用 创建一个`WebView`首先要在布局文件中声明它。在XML布局文件中,可以添加如下代码: ```xml &lt;WebView android:id="@+id/webView" ...

    Android WebView打开网址浏览网页.rar

    Android WebView打开网址浏览网页,实现浏览器打开网页的功能,需要为WebView设置WebChromeClient,要实现这个功能,需要几个步骤:用户输入网址,将焦点移到EditText供输入,然后判断用户输入的是否是网址,是网址...

    Android高级应用源码-自定义WebView,自带加载动画.rar

    通过分析和学习这个源码,开发者可以更深入地掌握Android中的WebView使用,理解如何结合原生组件实现更丰富的交互效果,同时也能提升自己的代码组织和优化能力。对于那些希望在应用中集成网页内容的开发者来说,这是...

Global site tag (gtag.js) - Google Analytics