js调用Java方法¶
js或是ts调用Java方法。
Java端¶
首先js和Java之间约定一个接口名,这里叫做androidInterface
。
Java端要给WebView添加js接口。即调用addJavascriptInterface
方法。
在WebView加载本地存储的网页基础上,我们对WebView进行设置。
WebView webView = findViewById(R.id.web2);
webView.addJavascriptInterface(this, "androidInterface"); // 添加接口
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowFileAccess(true);
webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowContentAccess(true);
webSettings.setDomStorageEnabled(true);
webView.loadUrl(url);
上面的this
是activity,在这个activity中我们新增2个Java方法。
import android.webkit.JavascriptInterface;
@JavascriptInterface
public String getStringInfo() {
return Build.BRAND;
}
@JavascriptInterface
public String getOneJson() {
return new Gson().toJson(new User((int) System.currentTimeMillis(), true, "default rule", 3));
}
@JavascriptInterface
注解。并且返回的都是字符串。
如果要传送对象,可以转换为json字符串来传送。
这样Java方面就准备完毕了。
网页端¶
前端调用Java方法需要借助window
。ts或者js都用到window
。
上面我们约定了使用androidInterface
为接口名。调用方法如window.androidInterface
。
例如typescript调用Java方法。
callNative(): string {
let result = window.androidInterface.getStringInfo();
return result;
}
getOneObject(): User {
let json = window.androidInterface.getOneJson();
let user: User = JSON.parse(json);
return user;
}
js的也类似,使用window.androidInterface
。
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~