Android WebView не отображает веб-страницу, даже если страница успешно завершила загрузку - PullRequest
0 голосов
/ 29 мая 2020

Я добавил inte rnet -разрешения, и я также использовал метод WebViewClient.onPageFinished, чтобы проверить, загрузилась ли страница, что оказалось так. JavaScript также включен для моего WebView.

Код, который я использую для настройки своего веб-представления

webView.webChromeClient = KeplerWebChromeClient(progressBar)
webView.webViewClient = keplerWebViewClient

webView.settings.javaScriptEnabled = true
webView.settings.useWideViewPort = true
webView.settings.loadWithOverviewMode = true
webView.settings.setSupportZoom(true)
webView.settings.setSupportMultipleWindows(true)
webView.scrollBarStyle = View.SCROLLBARS_INSIDE_OVERLAY
webView.setBackgroundColor(Color.WHITE)

Я использую KeplerWebChromeClient для отображать ход загрузки веб-страницы.

keplerWebViewClient - это объект класса WebViewClient, который я использую для загрузки веб-страниц и отслеживания того, завершила ли загрузка веб-страница или нет.

И я Следует отметить, что этот вопрос возникает не всегда. Иногда, когда я запускаю свое приложение, WebView действительно работает и загружает и отображает веб-страницу правильно, а в других случаях - нет. Я обнаружил, что указанные ниже записи logcat уникальны для случаев, когда веб-страница не отображается.

E / chromium: [ERROR: tile_manager. cc (778 )] ВНИМАНИЕ: превышены пределы памяти плитки, часть содержимого может не отображаться

[ОШИБКА: tile_manager. cc (778)] ВНИМАНИЕ: превышены пределы памяти плитки, часть содержимого может не отображаться

E / chromium: [ОШИБКА: tile_manager. cc (778)] ВНИМАНИЕ: превышены пределы памяти тайлов, часть содержимого может не отображаться

E / chromium: [ОШИБКА: tile_manager. cc (778)] ВНИМАНИЕ: превышены пределы памяти плитки, часть содержимого может не отображаться

В чем проблема и как ее исправить? Заранее спасибо.

Изменить: я очистил все данные приложения со своего телефона, а затем перезапустил приложение. После этого все стало работать нормально. Я смог просматривать с помощью WebView, но после использования приложения еще несколько раз, т.е. закрытия и открытия, проблема снова появилась. Удаление всех данных временно решает проблему. Чем это может помочь в решении проблемы?

1 Ответ

0 голосов
/ 29 мая 2020

Мне нужно попробовать, и у меня все работает нормально.

private fun setupWebView(url: String) {
        webView.settings.javaScriptEnabled = true
        webView.settings.domStorageEnabled = true
        webView.settings.setPluginState(WebSettings.PluginState.ON);
        webView.settings.allowFileAccess = true;
        webView.webViewClient = WebClient()
        webView.webChromeClient = CustomWebChromeClient()
        webView.loadUrl(url)
    }

    private inner class WebClient : WebViewClient() {

        override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) {
            super.onPageStarted(view, url, favicon)
        }

        override fun onPageCommitVisible(view: WebView, url: String) {
            super.onPageCommitVisible(view, url)
        }

        override fun shouldOverrideUrlLoading(
            view: WebView,
            url: String
        ): Boolean {
            view.loadUrl(url)
            return true
        }

        override fun onPageFinished(view: WebView, url: String) {
            super.onPageFinished(view, url)
        }
    }

    private inner class CustomWebChromeClient : WebChromeClient() {
        override fun onJsAlert(
            view: WebView,
            url: String,
            message: String,
            result: JsResult
        ): Boolean {
            return false
        }
    }

Надеюсь, это сработает для вас!

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