8

Ho una semplice attività che crea un WebView per caricare commenti di Facebook, ad es.Impossibile eseguire il rendering dei commenti di Facebook su Android WebView tramite HTML locale

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 
    } 

Solo la chiamata al file html remoto funziona, ma quella locale non funziona. Vedere le seguenti immagini:

tramite file remoto

via remote file

tramite file locale

via local file

E il contenuto di 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> 

risposta

6

È necessario specificare un URL di base.

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

Per sostituire completamente la linea di cui sopra:

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) 
+0

Carino, come si fa a scoprire il trucco? – Howard

+1

C'è un errore della console javascript che è stato registrato e ho notato che il parametro del dominio sulla richiesta era vuoto. –

+0

Ic, ma qual è la console JavaScript che hai menzionato? – Howard

Problemi correlati