上一篇文章简单描述了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’。