1、创建并绑定webView
webView = (WebView)findViewById(R.id.webView);
2、添加JS交互功能
webView.getSettings().setJavaScriptEnabled(true);
3、添加一个对象, 让JS可以访问该对象的方法, 该对象中也可以调用JS中的方法
jsinterface = new JsInterface(webView);
webView.addJavascriptInterface(jsinterface,"JSInterface");
4、处理webView的Alert弹出框,默认会被屏蔽
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onJsAlert(
WebView view,
String url,
String message,
JsResult result
){
return super.onJsAlert(view,url,message,result);
}
});
5、设置webView地址,如果外部链接记得加权限哦
webView.loadUrl("file:///android_asset/h5.html");
6、设置一个JS与Android都可以访问的对象
/**
* 暴露给js的功能接口
*/
public class JsInterface {
private WebView webView;
public JsInterface(WebView webView) {
this.webView = webView;
}
/**
* 接收JS回调
*/
@JavascriptInterface
public void javaFunction() {
final AlertDialog.Builder builder = new AlertDialog.Builder(webView.getContext());
builder.setTitle("Android");
builder.setMessage("这是Android弹出框");
builder.setPositiveButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setNegativeButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.create().show();
}
/**
* 执行JS方法
*/
public void javaCallJsFunction(){
webView.loadUrl(String.format("javascript:javaCallJsFunction()"));
}
}