Как отправить данные в виде HashMap из JavaScript в Kotlin в WebView на Android - PullRequest
0 голосов
/ 30 января 2019

Я работаю с Android WebView и хотел бы отправить некоторые данные из javascript на нативную сторону, написанную на Kotlin.

На нативной стороне у меня есть такая функция, поэтому мне нужен HashMap с обеими строками:

@JavascriptInterface
fun sendGoogleAnalytics(analyticsParams: HashMap<String, String>){

    analyticsParams.forEach { (key, value) ->
        Timber.v("Key: $key :: value: $value" )
    }
}

Я не очень знаком с javascript, поэтому я попробовал два варианта:

var analyticsParams = new Map();
analyticsParams.set("location", "My Location");
analyticsParams.set("dimension1", "dimension1Value");

App.sendGoogleAnalytics(analyticsParams);

и

var analyticsParams = {};
analyticsParams["location"] = "My Location";
analyticsParams["dimension11"] = "dimension1Value";

App.sendGoogleAnalytics(analyticsParams);

Передача данных из javascript в kotlin на самом деле работает нормально, я проверил это. Но оба эти способа дают мне ошибку:

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter analyticsParams
     at appPackageName.ArticleWebViewController$ArticleJSInterface.sendGoogleAnalytics(ArticleWebViewController.kt)
     at android.os.MessageQueue.nativePollOnce(Native Method) 
     at android.os.MessageQueue.next(MessageQueue.java:323)
     at android.os.Looper.loop(Looper.java:135)
     at android.os.HandlerThread.run(HandlerThread.java:61)

Вопрос : Что я делаю не так?Какой тип HashMap / Array я должен использовать, чтобы иметь возможность читать его на родной стороне с Kotlin?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...