我在 Android 中有一个 JS 桥,public class WebInterface { Context mContext; public WebInterface(Context c) { this.mContext = c;} @JavascriptInterface public void showAlert() { Toast.makeText(mContext, "This is being called from the interface", Toast.LENGTH_SHORT).show(); }}我可以在我的webView,mWebView.addJavascriptInterface(WebInterface(this), "android"); 这适用于简单的方法,例如showAlert()当 params 或 param 是简单字符串时没有参数的地方,但是当我需要在从 Web 应用程序调用本机函数时将数据模型作为参数传递时,如何绑定数据模型?我需要使用自定义数据模型类型的参数调用实现函数。public class WebInterface { Context mContext; public WebInterface(Context c) { this.mContext = c;} @JavascriptInterface public void showAlert() { Toast.makeText(mContext, "This is being called from the interface", Toast.LENGTH_SHORT).show(); public void saveData(data: DataModel) { // DataModel is custom model Toast.makeText(mContext, "Saving data model", Toast.LENGTH_SHORT).show(); }}如何跨本机和 Web 应用程序绑定数据模型。是否可以使用 TypeScript?如果可以,如何配置?是否只能使用普通的 json 字符串作为参数?没有其他办法吗?
2 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
您应该使用 JSON 字符串。您可以创建另一个函数来接收您想要的格式,然后在传递给函数之前对对象进行 JSON.stringify。
Javascript
function saveData(obj){
const json = JSON.stringify(obj);
Android.saveData(json);
}
至尊宝的传说
TA贡献1789条经验 获得超10个赞
替代使用 JSON.parse(data)
javascript
function loadJson(obj) {
var jsonValue = JSON.parse(obj)
Android.saveData(jsonValue)
}
添加回答
举报
0/150
提交
取消