android app 为了避免对频繁改动的页面改动从而不断更新版本,常常会对那些页面使用h5页面,直接在h5页面访问android原生代码或者调用h5中的方法。
android中通过webview加载页面。
WebSettings webSetting = binding.webView.getSettings();
// 是否允许在webview中执行javascript
webSetting.setJavaScriptEnabled(true);
//与h5页面绑定
binding.webView.addJavascriptInterface(this,"testJS");
//加载h5页面,这是本地加载,常常会从后台返回url,然后加载
binding.webView.loadUrl("file:///android_asset/test.html");
//h5调用android中的方法
@JavascriptInterface
public void Callfunction() {
System.out.println("Callfunction");
runOnUiThread(new Runnable() {
@Override
public void run() {
//android调用h5中的方法
binding.webView.loadUrl("javascript: GetList()");
}
});
}
由于binding.webView.addJavascriptInterface(this,”testJS”);中是this,直接在activity下写,当然也可以另外创建类如binding.webView.addJavascriptInterface(new WebClient(),”testJS”);
关于 @JavascriptInterface的理解
//h5中调用anroid代码,testJS为之前绑定的
window.testJS.Callfunction();