1、html调用java。
先给WebView添加Javascript接口(addJavascriptInterface),给接口定义一个名“”Listener“”,还有要告诉html,自定义接口中的实现方法(onHandleResult(...))。供html调用。在返回方法中实现逻辑。
注意:当在接口中返回方法里做耗时或更新主线程UI,需要启动新的线程。(new Handler()、Handler.post())。
WebView.addJavascriptInterface(new JavascriptInterfaces(), "Listener");
/**
* 描述:JS通信接口
*
* @author:QJS
*/
class JavascriptInterfaces {
@JavascriptInterface
public void onHandleResult(String success) {
if ("1".equals(success)) {
// TODO 弹出选择相册和拍照
mHandler.post(updateThread);
} else {
showToast(DifficultCasesDetailsActivity.this, "提交失败,请重试", Toast.LENGTH_SHORT);
}
}
}
private Handler mHandler = new Handler();
Runnable updateThread = new Runnable() {
@Override
public void run() {
showDialog();
}
};
2、java调用html。
可以直接在方法里调用WebView.loadUrl("javascript:方法名()"); 如果想传递参数在方法中添加参数。每个参数用单引号、双引号包裹。
WebView.loadUrl("javascript:hello_android('" + picIds + "','" + imageurl + "')");