Как настроить общую модель данных для Android и моста JS? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть мост JS в Android,

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(), гдеПараметр не является параметром, когда параметр или параметр являются простой строкой, но когда мне нужно передать модель данных в качестве параметров при вызове собственных функций из веб-приложения, как я могу связать модели данных?Мне необходимо вызвать реализацию функции с параметром типа пользовательской модели данных.

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();
    }
}

Как связать модель данных с собственным и веб-приложением.Возможно ли использовать TypeScript?Если да, то как настроить?Возможно ли использование только простой строки json в качестве параметров?нет другого пути?

1 Ответ

1 голос
/ 10 июня 2019

Вы должны использовать строку JSON.Вы можете создать другую функцию, получить нужный вам формат, а затем JSON.stringify объект перед передачей в функцию.

Javascript

function saveData(obj){
  const json = JSON.stringify(obj);
  Android.saveData(json);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...