Я работаю с 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?