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

"Веб-страница недоступна" с WebView.loadData() ТОЛЬКО в эмуляторе

Я вызываю loadData на мой WebView и передаю ему некоторый HTML в виде строки так:

webView.loadData( htmlString, "text/html", "utf-8" );

Он отлично работает на моей вкладке Galaxy Tab 10.1, но WebView отображает:

Webpage not available

при запуске на эмуляторе со всеми настройками, соответствующими моей вкладке Galaxy. Установка android.permission.INTERNET в манифесте не имеет никакого эффекта, хотя мне не нужно это разрешение, так как я обрабатываю HTML-код в памяти и не получаю доступ к чему-либо через соединение с данными.

Что происходит?

4b9b3361

Ответ 1

Попробуйте с этим кодом

webView.loadData( URLEncoder.encode(htmlString).replaceAll("\\+"," "), "text/html", "utf-8" );

insted

webView.loadData( htmlString, "text/html", "utf-8" );

он должен работать, потому что иногда символ типа "%", "\", "#" создает проблему, если ее неправильно закодировано

Ответ 2

В 2.x платформы loadData() не выполняются в некоторых случаях (для этого требуется, чтобы html был экранирован), вместо этого используйте loadDataWithBaseURL() и передайте null для baseUrl и historyUrl:

webView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null);

Ответ 3

На самом деле спасибо @Viraj за ответ.

Google в настоящее время не одобряет вышеуказанное, и вы должны использовать это вместо:

webView.loadData(URLEncoder.encode(mAdvertisement.getContent(), "UTF-8").replaceAll("\\+", " "), "text/html", "UTF-8");