在开发的时候经常会用到webview,必然会涉及到webview与客户端的交互,比如在网页上进行某个操作后,需要在app上显示一个提示,提示内容由网页提供,这时候就需要js来调用客户端的java代码了。
webview提供了一个方法addJavascriptInterface()来满足这种需求。
具体步骤:
1.客户端定义一个类,并定义需要的方法,例如:
public class WebAppInterface {
Context mContext;
/**
* Instantiate the interface and set the context
*/
WebAppInterface(Context c) {
mContext = c;
}
/**
* Show a toast from the web page
*/
@JavascriptInterface
public void showToastContent(String content) {
}
}
注意,在方法定义前加上@JavascriptInterface注解。
2.生成第一步中定义的类的实例并添加给webview。
webView.addJavascriptInterface(new WebAppInterface(getActivity()), "TestObject");
这里的”TestObject”是随便起的名字,你可以改成其他的。这个名字主要是让webview的js调用的。
3.在js中通过”TestObject”对象调用客户端方法
TestObject.showToastContent("haha")
备上一段官网关于这个内容的代码:
class JsObject {
@JavascriptInterface
public String toString() { return "injectedObject"; }
}
webView.addJavascriptInterface(new JsObject(), "injectedObject");
webView.loadData("", "text/html", null);
webView.loadUrl("javascript:alert(injectedObject.toString())");