WebView初探使用总结

1、WebView加载页面 
WebView加载html页面时,根据HTML文件所在的位置不同写法也不同:

//加载assets文件夹下的test.html页面
mWebView.loadUrl("file:///android_asset/test.html");
//加载普通网页
mWebView.loadUrl("http://www.baidu.com");

如果只是这样调用mWebView.loadUrl()加载页面的话,那么页面将会在你手机的默认浏览器上打开。那如果想要页面在App内中打开的话,那么就得设置setWebViewClient:

mWebView.setWebViewClient(new WebViewClient());

2、调用Html页面中的Javascript方法 
首先设置WebView支持Javascript。

//设置为支持js方法
mWebView.getSettings().setJavaScriptEnabled(true);

有两种调用方式:

1.如果Js方法没有返回值

//其中do是Js中的方法
mWebView.loadUrl("javascript:do()");

2.不管Js方法有无返回值

//sum为Js中的方法
mWebView.evaluateJavascript("sum(1,2)", new ValueCallback<String>() {
        @Override
        public void onReceiveValue(String value) {
            Log.e(TAG, "onReceiveValue value=" + value);
        }
    });

3、Javascript调用Android本地的Java方法 
在Android 4.2 以后需使用@JavascriptInterface注解来声明方法,下面是一个本地Java方法:

public class JsInteration {
    @JavascriptInterface
    public String show() {
        return "hello world";
    }
}

定义完这个类后再注册到WebView里:

mWebView.addJavascriptInterface(new JsInteration(), "android");

那么在Js中怎么来调用呢?

<script type="text/javascript">
     function s(){
         //调用Java的show()方法
        var result =window.android.show();
        document.getElementById("p").innerHTML=result;
    }
</script>

ps:Javascript调用的方法运行在一个叫JavaBridge的子线程中,而非Main线程

4、拦截Html页面中的点击事件

mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            //判断url,拦截事件
            if (url.equals("file:///android_asset/test2.html")) {
                Log.e(TAG, "shouldOverrideUrlLoading: " + url);
                startActivity(new Intent(MainActivity.this,Main2Activity.class));
                // true代表app自己处理
                return true;
            } else {
                mWebView.loadUrl(url);
                // false代表webview自己处理
                return false;
            }
        }
    });
时间: 2024-10-13 07:49:48

WebView初探使用总结的相关文章

10.3.3 WebView的几个常见功能

当前主流的开发模式是"WebView+ProgressDialog" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_paren

进阶之初探nodeJS

一.前言 在"初探nodeJS"随笔中,我们对于node有了一个大致地了解,并在最后也通过一个示例,了解了如何快速地开启一个简单的服务器. 今儿,再次看了该篇随笔,发现该随笔理论知识稍多,适合初级入门node,固萌生一个想法--想在该篇随笔中,通过一步步编写一个稍大一点的node示例,让我们在整体上更加全面地了解node. so,该篇随笔是建立在"初探nodeJS"之上的,固取名为"进阶之初探nodeJS". 好了,侃了这多,那么我们即将实现一个

Android WebView 开发教程

1.WebView的使用 (a). 创建WebView的实例加入到Activity中 WebView webview = new WebView(this); setContentView(webview); 或者在xml中配置WebView <Webview android:layout_width="match_parent" android:layout_height="match_parent" > </Webview> (b). 访

从273二手车的M站点初探js模块化编程

前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数据. 273这个M站点是产品推荐我看的.第一眼看这个产品时我就再想他们这个三次加载和翻页按钮的方式,那么小分页的pageIndex是怎么计算的.所以就顺便看了下源码. 提到看源码时用到了Chrome浏览器的格式化工具(还是朋友推荐我的,不过这个格式化按钮的确不明显,不会的话自行百度). 三次加载和分

WebView使用详解(三)——WebChromeClient与LoadData补充

前言: 我不会忘了我 忘了我曾说过一定会得到的梦想 --<老大>小柯 相关文章 1.<WebView使用详解(一)--Native与JS相互调用(附JadX反编译)> 2.<WebView使用详解(二)--WebViewClient与常用事件监听> 一.WebChromeClient 1.概述 (1). 与WebViewClient的区别 很多同学一看到这里有Chrome,立马就会想到google 的Chrome浏览器:这里并不是指Chrome浏览器的意思,而是泛指浏览

[转载]HDFS初探之旅

转载自 http://www.cnblogs.com/xia520pi/archive/2012/05/28/2520813.html , 感谢虾皮工作室这一系列精彩的文章. Hadoop集群(第8期)_HDFS初探之旅 1.HDFS简介 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上.它所具有的高容错.高可靠性.高可扩展性.高

Android WebView loadData读取两次才能显示的问题

webview.loadDataWithBaseURL(null,result,"text/html", "utf-8", null); 使用loadDataWithBaseURL替代loadData 参考网址:http://stackoverflow.com/questions/17501860/had-to-load-data-twice-to-make-webview-refresh-in-android

MongoDB初探系列之二:认识MongoDB提供的一些常用工具

在初探一中,我们已经可以顺利的将MongoDB在我们自己的机器上跑起来了.但是在其bin目录下面还有一些我们不熟知的工具.接下来,将介绍一下各个小工具的用途以及初探一中MongoDB在data文件夹下创建的文件的用途. 1.bin目录下面的各种小工具简介及使用方式 bsondump.exe 用于将导出的BSON文件格式转换为JSON格式mongo.exe mongoDB的客户端 mongod.exe 用于启动mongoDB的Server mongodump.exe 用于从mongodb数据库中导

Android中webview和js之间的交互(转)

http://www.cnblogs.com/leizhenzi/archive/2011/06/29/2093636.html 1.android中利用webview调用网页上的js代码. Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示: mWebView.getSettings().setJavaScriptEnabled(true); mWebV