Я загружаю содержимое локального html-файла в WebView:
context?.assets?.open("SeatingPlan.html")?.bufferedReader().use {
val some = it?.readText()
some.let {
val finalHTML = some!!.replace("{PERFORMANCE-ID}", occurrence.id.toString())
binding.webView.addJavascriptInterface(SeatingPlanWebAppInterface { ticketData: String ->
handleTicketSelection(ticketData)
}, "Android")
binding.webView.loadData(finalHTML, "text/html; charset=utf-8", "UTF-8")
}
}
Затем у меня есть прослушиватель, так что я буду запускать некоторые функции JavaScript после завершения загрузки следующим образом:
binding.webView.settings.javaScriptEnabled = true
binding.webView.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
super.onPageFinished(view, url)
binding.webView.loadUrl("javascript:(function() {" + "document.addEventListener('LTD.SeatPlan.OnSeatSelected', e => {Android.seatSelected(JSON.stringify(e.detail))});" + "document.addEventListener('LTD.SeatPlan.OnSeatUnselected', e => {Android.seatUnSelected(JSON.stringify(e.detail))});" + "})();")
}
}
Один и тот же код хорошо работал для всех поддерживаемых версий моего приложения для Android (5.0+), но теперь, после обновления до целевой SDK 29, он застревает при загрузке HTML и вместо этого показывает пустой белыйscreen.
Я думаю, что проблема может быть связана с изменениями, внесенными для SDK
29, но я не знаю, где еще искать решение.Причина, по которой я думаю, что это может быть целью SDK
29, заключается в том, что последние изменения, относящиеся к WebView
, были сделаны: https://developer.android.com/about/versions/pie/android-9.0-migration. Есть ли обходной путь?