上一篇文章简单描述了WebView(根据官网文档简单翻译的),让我们对它有新的不一样的认识。如果你对WebView还不是很了解,那么请先去看看Android WebView(一) WebView详解。今天,我们就来详解WebView中的常用api。

1.public void addJavascriptInterface (Object object,String name)

方法说明:

    在JavaScript代码中可以调用Android本地代码。

参数说明:

    object  java 对象注入到WebView'的JavaScript上下文,空值时将忽略 (我们一般会自己实现一个类,这个类里面提供了JavaScript调用的方法)

    name   在JavaScript中暴露的对象使用的名称(我们在JavaScript中调用本地方法时的对象名称,调用模式为javascript:name.方法名())

PS:在声明类的方法时,记得加上@JavascriptInterface(为了兼容JELLY_BEAN_MR1(4.2)以上版本),并且方法必须是公有的。

使用例子:

  html代码

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<script type="text/javascript">   
function showToast(toast) {       
    javascript:js.showToast(toast);   
     }
</script>

</head>
<body>
<input type="button" value="Say hello"
    onClick="showToast('Hello Android!')" />
</body>
</html>


android代码

public class JavaScriptinterface {
    private Context mContext;

    /** Instantiate the interface and set the context */
    public JavaScriptinterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
	 @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}
...
myWebView.addJavascriptInterface(new JavaScriptinterface(this),
                "js");


    当在网页中点击按钮时,就会调用Android应用中定义的showToast()方法。


2.public boolean canGoBack ()

方法说明:

    获取WebView 是否有往前的历史记录(后退)。

返回值:

    当且仅当WebView 有往前的历史记录时,返回true。

PS:当需要执行goBack ()方法前,先调用该方法,如果为true,则可以调用goBack ()方法。

3.public void goBack ()

方法说明:

    回到这个WebView 的前面历史界面(后退)。

4.public boolean canGoForward ()

方法说明:

      获取WebView 是否有往后的历史记录(前进)。

返回值:

    当且仅当WebView 有往后(前进)的历史记录时,返回true。


5.public boolean canGoBackOrForward (int steps)

方法说明:

    获取网页是否能后退或者前进相应的偏移量。(负数表示后退,正数表示前进)

参数说明:

    steps  移动负数或者正数的偏移量历史

6.public boolean canZoomIn ()

方法说明:

    该方法在API17,不推荐使用(弃用)。该方法很容易有误差在网页渲染和UI线程由于速度条件。推荐使用onScaleChanged(WebView, float, float),获取WebView 是否能放大。

返回值:

    如果WebView 可以放大,返回true。

7.public boolean canZoomOut ()

方法说明:

    该方法在API17,不推荐使用(弃用)。该方法很容易有误差在网页渲染和UI线程由于速度条件。推荐使用onScaleChanged(WebView, float, float),获取WebView 是否能缩小。

返回值:

    如果WebView 可以缩小,返回true。


8.public Picture capturePicture ()

方法说明:

    该方法在API19,不推荐使用(弃用)。使用onDraw(Canvas)在WebView获取一个位图快照,或者saveWebArchive(String)保存内容到文件上。

返回值:

    返回这个WebView当前内容的一张图片。

9.public void clearCache (boolean includeDiskFiles)

方法说明:

    清除缓存资源。注意,是每个应用的缓存,这么做将清除所有WebView的缓存。

参数说明:

 includeDiskFiles   如果参数是false,那么只清除RAM 缓存。

10.public static void clearClientCertPreferences (Runnable onCleared)

方法说明:

    清除客户端证书preferences 存储在响应程序/取消客户端证书请求。注意,Webview会自动清除这些preferences ,当收到ACTION_STORAGE_CHANGED时。preferences 是由所有的webview共享,由嵌入应用创建。

参数说明:

    onCleared  当客户的证书被清除时runnable 执行,如果对返回值不感兴趣,那么可以传递空值。runnable 将被 UI线程调用。

11.public void clearFormData ()

方法说明:

    仅仅删除自动完成填充的表达数据,并不会删除WebView存储的数据。

12.public void clearHistory ()

方法说明:

    清除WebView内部的历史记录。

13.public void clearMatches ()

方法说明:

    清除网页的高亮匹配文本,文本由findAllAsync(String)创建。


14.public void clearView ()

方法说明:

    该方法在API18,不推荐使用(弃用)。使用WebView.loadUrl("about:blank") 比较可靠重置View状态,并且释放网页资源(包括任何正在运行的JavaScript)。

    清除WebView,以至于onDraw()将绘制一个什么都没有背景是白色,并且当MeasureSpec 不等于MeasureSpec.EXACTLY,返回0。

15.public void destroy ()

    销毁这个WebView的状态。当系统移除这个WebView后,才能调用这个方法。调用这个WebView的destroy可能不会调用其他方法。

16.public void loadData (String data, String mimeType, String encoding)

方法说明:

    加载'data'数据。

参数说明:

     data  给定编码的字符串数据


    mimeType  数据的MIME Type(该资源的媒体类型,媒体类型通常是通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 Content-Type 来表示的)


    encoding  数据的编码

PS:JavaScript的同源策略,意味着脚本运行在一个网页加载使用这个方法时,将无法访问使用任何'data'之外scheme,包括 http(s)。为了避免这种情况,使用loadDataWithBaseURL()和合适基本URL。编码参数需要指定数据是base64 还是URL 编码。如果数据是base64 编码,则编码参数必须是base64。对于所有其他参数值,包括空值,假设数据是八位字节范围内的ASCII 编码,那么就是一个安全的URL字符, 超出八位字节范围的之外的用标准的%xx 十六进制URLs 编码。例如, '#', '%', '\', '?' 分别用%23, %25, %27, %3f代替。

17.public void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)

参数说明:

    baseUrl   URL作为页面的基URL。如果为空,默认:空白。

    data        给定编码的字符串数据

    mimeType  数据的MIME Type(例如, 'text/html',默认是'text/html)

    encoding 数据的编码

    historyUrl  URL 作为历史条目,如果为null,如果为空默则为:空白。如果不为空,则必须是一个有效的URL 

18.public void loadUrl (String

方法说明:

        加载指定的url

参数说明:

      url 加载资源的url

19.public voidloadUrl(String url,Map<String, String> additionalHttpHeaders)

方法说明:

        加载指定的具有特殊的额外的http请求头的url

参数说明:

      url   加载资源的url


   additionalHttpHeaders 额外的请求头被用于http请求在这个url,指定一个map中的值。注意,如果该map包含任何请求头的默认设置在该WebView,例如控制缓存,接受类型或用户代理,他们的值可能会被该WebView的默认值覆盖。

20.public voidsetWebViewClient(WebViewClient

方法说明:

    设置WebViewClient 将接受各种通知和请求,这将取代当前程序的处理。

参数说明:

WebViewClient 的实现。

PS:WebViewClient  

1.public boolean shouldOverrideUrlLoading (WebView view, String url)

方法说明:

       给主机应用一个机会接管控制当一个新的url将要被加载在当前WebView。如果没有提供WebViewClient ,默认的WebView将要求Activity Manager 去选择一个合适的handle为这个url。如果有WebViewClient ,返回 ‘true’,意思是说主应用程序处理这个url,否则返回‘false’意思是当前的WebView要处理这个url。这个方法不允许使用‘post’请求方法调用。

参数说明:

      view 发起回调的WebView 
     url 加载资源的url
返回值:

    如果主机应用程序想要离开当前的WebView并且它自己处理url,那么返回 ‘true’,否则,返回‘false’。