我在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是简单字符串时没有params,但是当我需要从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字符串用作参数吗?没有其他办法吗?
最佳答案
您应该使用JSON字符串。
您可以创建另一个函数以接收所需的格式,然后在将对象传递给该函数之前先进行JSON.stringify。
Java脚本
function saveData(obj){
const json = JSON.stringify(obj);
Android.saveData(json);
}