提到WebView就会想到Hybrid混合开发,利用WebView加载 Html5页面。这种开发可以替代部分原生功能,灵活,开发周期短,而且不需要升级就可以在 ios 和安卓上动态更新。混合开发必然离不开Html5和Native的交互,下面来总结一下,Js与原生交互。
1.交互方式
1.Android调用 js 方法
Android 通过loadUrl() 和evaluateJavascript()这两种方法调用 JS函数:
webview.loadUrl(“javascript:FunJS()”)//这种方法效率低,需要刷新页面
// Android4.4以上使用效率比loadUrl高,不会刷新页面,在有返回值的时候使用此方法。
webview.evaluateJavascript(“javascript:FunJS()”,new ValueCallback() {
@Override
public void onReceiveValue(String value) {
//此处为 js 返回的结果
}){
}
2.js 调用 Android 方法
1.通过addJavascriptInterface()进行对象映射
WebView.addJavascriptInterface(new AndroidJs(), "androidjs");
AndroidJs是一个 java 对象,js 调用的 java 方法在此对象中,通过@JavascriptInterface注解定义。
public class AndroidJs{
// 被JS调用的方法必须加入@JavascriptInterface注解
//此方法无返回值,如果 js 需要返回值可以加上返回值 return
@JavascriptInterface
public void hello(String msg) {
System.out.println("JS调用了Android的hello方法");
}
}
2.使用shouldOverrideUrlLoading()方法拦截url,通过解析 url做相应的原生操作
3.通过onJsAlert()、onJsConfirm()、onJsPrompt()方法拦截JS对话框alert()、confirm()、prompt()