为了账号安全,请及时绑定邮箱和手机立即绑定

如何跨android和JS桥配置通用数据模型?

如何跨android和JS桥配置通用数据模型?

波斯汪 2021-06-11 14:01:20
我在 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);

}


查看完整回答
反对 回复 2021-06-24
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

替代使用 JSON.parse(data)


javascript


function loadJson(obj) {

  var jsonValue = JSON.parse(obj)

  Android.saveData(jsonValue)

}


查看完整回答
反对 回复 2021-06-24
  • 2 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信