Подтвердить что ты не робот

WebView показывает исходный html с loadDataWithBaseURL, а не визуализированный вид

Я разрабатываю приложение, которое использует WebView для визуализации пользовательского html. Но когда я звоню loadDAtaWithBaseURL(URL, "<html><h1>TEST</h1></html>", "text/html; charset=utf-8;", "utf-8", null);
он показывает сам html (не отображаемый) на эмуляторе Genymotion. На моем HTC-одном он отлично работает с визуализированным html. Каждый результат показан как прикрепленный.

Shown result on Genymotion emulatorShown result on HTC one

Есть ли у кого-то такая же проблема или решение? Спасибо.

4b9b3361

Ответ 1

Не вводите mimeType ниже KitKat.

fun getMimeType(): String? {
    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        "text/html; charset=utf-8"
    } else {
        null
    }
}
loadDAtaWithBaseURL(URL, "<html><h1>TEST</h1></html>", getMimeType(), "utf-8", null);

Джава:

if(Build.VERSION.SDK_INT < 21)
    webView.loadDataWithBaseURL("about:blank","<html><h1>TEST</h1></html>","text/html", "UTF-8",null);
else
    webView.loadDataWithBaseURL("about:blank","<html><h1>TEST</h1></html>","text/html; charset=utf-8", "UTF-8",null);

Ответ 2

Относительно информации, которую вы указали, я не могу получить четкую отладочную информацию об этой проблеме, но так должно быть сделано, просто чтобы проверить, не пропустили ли вы что-то.

  • Сначала добавьте эту строку в свою активность в файле манифеста

  • Загрузите данные, используя

    public void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl);

И это делается таким образом

loadDataWithBaseURL(Url, data, "text/html", "UTF-8", historyUrl)

Обратите внимание, что

Если базовый URL использует схему данных, этот метод эквивалентен вызову loadData(), и historyUrl игнорируется, и данные будут обрабатываться как часть URL-адреса данных: Если базовый URL-адрес использует любую другую схему, данные будут загружены в WebView в виде простой строки (т.е. Не являются частью URL-адреса данных), и любые объекты с кодировкой URL-адреса в строке не будут декодироваться.