"Веб-страница недоступна" с 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-код в памяти и не получаю доступ к чему-либо через соединение с данными.
Что происходит?
Ответы
Ответ 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");