«Веб-страница не доступна» только с WebView.loadData () в эмуляторе - PullRequest
13 голосов
/ 07 декабря 2011

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

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

Отлично работает на Galaxy Tab 10.1, но WebView отображает:

Webpage not available

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

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

Ответы [ 3 ]

34 голосов
/ 23 января 2012

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

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

вместо

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

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

27 голосов
/ 26 марта 2012

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

webView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null);
0 голосов
/ 09 июля 2015

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

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

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