Javascript не работает на Android WebView, когда он работал до обновления на целевой SDK 29 - PullRequest
0 голосов
/ 02 июля 2019

Я загружаю содержимое локального 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. Есть ли обходной путь?

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