Не удалось отобразить комментарии Facebook в Android WebView через локальный HTML

У меня есть простое действие, которое создает WebView для загрузки комментариев Facebook, например.

  protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView myWebView = (WebView) findViewById(R.id.webView);
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        // myWebView.loadUrl("http://192.168.0.2/facebook.html"); // See 1st image
        myWebView.loadUrl("file:///android_asset/facebook.html"); // See 2nd image
    }

Работает только вызов удаленного html файла, а вот локальный не работает. См. следующие изображения:

через удаленный файл

через удаленный файл

через локальный файл

через локальный файл

И содержание facebook.html

![<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  </head>
  <body>

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)\[0\];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "http://connect.facebook.net/en_US/all.js#xfbml=1&appId=xxx";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<div class="fb-comments" data-href="http://example.com" data-width="470" data-num-posts="10"></div>

  </body>
</html>



Ответы (1)


Вам необходимо указать базовый URL.

myWebView.loadDataWithBaseURL("http://www.example.com", "YOUR_HTML", "text/html", null, null)

Чтобы полностью заменить строку выше:

BufferedReader reader = new BufferedReader(new FileReader("file:///android_asset/facebook.html"));
String line;
String html = "";
while((line = reader.readLine()) != null) {
    html += line;
}
reader.close();
myWebView.loadDataWithBaseURL("http://www.example.com", html, "text/html", null, null)
person Andy McSherry    schedule 26.03.2013
comment
Зарегистрирована ошибка консоли javascript, и я заметил, что параметр домена в запросе был пустым. - person Andy McSherry; 26.03.2013
comment
Ic, а что за консоль JavaScript вы упомянули? - person Howard; 29.03.2013
comment
См. developer.android.com/guide/webapps/debugging.html#WebView для перехвата журналов консоли js в WebView. У меня все еще работает с тем же тестовым приложением, которое я написал на днях, вы что-то изменили? - person Andy McSherry; 31.03.2013