2012-05-22 17 views
5

Dopo aver elaborato un file, ottengo una stringa HTML in cui l'immagine è impostata comeAndroid: Visualizzare le immagini in Webview

<img src="abc.001.png" width="135" height="29" alt="" style="margin-left:0pt; margin-top:0pt; position:absolute; z-index:-65536" /> 

Il percorso dell'immagine non deve essere modificata perché devo scegliere la voce di file da una lista. L'immagine si trova nella stessa directory del file. Carico la stringa HTML utilizzando loadData/loadDataWithBaseURL, ma l'immagine non viene visualizzata. Vedo solo la sua cornice.

Come posso risolvere questo problema? E posso applicare quella soluzione nel caso in cui ho molte immagini che sono indicizzate come .001.jpg, .002.png, ecc ... (tutto in una directory)?

Aggiornamento: Grazie, funziona con l'istruzione loadUrl() indipendentemente dal nome dell'immagine. In effetti devo leggere ed elaborare il contenuto prima di caricarlo in WebView. Ecco perché utilizzo l'istruzione loadDataWithBaseUrl() e ho riscontrato i problemi di cui sopra. Ecco il mio codice nel progetto di test per leggere e visualizzare il contenuto di Test.html.

String res = "";   
    File file = new File(Environment.getExternalStorageDirectory()+"/Test.html"); 
    try { 
     FileInputStream in = new FileInputStream(file); 

     if (in != null) {    
      BufferedReader buffreader = new BufferedReader(
        new InputStreamReader(in)); 
      String line; 
      while ((line = buffreader.readLine()) != null) { 
       res += line; 
      } 
      in.close(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    }  
    wv.loadDataWithBaseURL(null, res, "text/html", "utf-8", null); 
    //wv.loadUrl("file://"+Environment.getExternalStorageDirectory()+"/Test.html"); 

La dichiarazione in // funziona ma non è quello che posso fare nel mio vero progetto. Ho una soluzione: dopo aver elaborato il contenuto, devo salvarlo in un file HTML temporaneo, quindi caricarlo, il file verrà eliminato in seguito. Tuttavia, sono ancora in attesa di una soluzione migliore :)

risposta

9

Provare a cambiare il nome del file immagine. Ho pensato che questo fosse dovuto al doppio punto nel nome.

<img id="compassRose" src="CompassRose.jpg"></img> 

questo sta lavorando per me ....

Codice:

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.webkit.WebView; 

public class StackOverFlowActivity extends Activity { 

    private Handler mHandler = new Handler(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     WebView view=(WebView)findViewById(R.id.webView1); 
     view.getSettings().setJavaScriptEnabled(true); 
     view.loadUrl("file:///android_asset/index.html"); 
     view.addJavascriptInterface(new MyJavaScriptInterface(), "Android"); 
    } 

    final class MyJavaScriptInterface 
    { 
     public void ProcessJavaScript(final String scriptname, final String args) 
      {    
       mHandler.post(new Runnable() 
        { 
         public void run() 
          { 
           //Do your activities 
          } 
        }); 
      } 
    } 
} 

index.html:

<html> 
<head> 
    <title title="Index"></title>         
</head> 

<body> 
    <h2>Android App demo</h2> 
    <br /> <img src="CompassRose.jpg" /> 
</body> 
</html> 

enter image description here

Risultato:

enter image description here

+0

ho fatto un altro progetto Android solo per testare con il nome "abc.jpg".Niente di diverso, WebView mostra solo la cornice dell'immagine. Quindi penso che WebView non riconosca la parte src non a causa del nome dell'immagine. Purtroppo non sono in grado di inserire nel file il percorso completo dell'immagine. –

+0

Vedi codice modificato, funziona per me .... hai provato in questo modo? – Ponmalar

+0

Se hai una soluzione, accetta questa come risposta – Ponmalar

1

Il tuo problema è con la linea:

wv.loadDataWithBaseURL(null, res, "text/html", "utf-8", null); 

Il primo parametro (baseURL) è nullo. Per qualche ragione, WebView rifiuta quindi di caricare qualsiasi risorsa collegata anche se si utilizzano URL assoluti. Si potrebbe trovare che funzionerà se si cambia il codice per (supponendo che le immagini sono memorizzati nella directory esterna):

wv.loadDataWithBaseURL ("file://" + Environment.getExternalStorageDirectory(), res, "text/html", "utf-8", null); 

Ricordate di aggiungere l'autorizzazione corretta se si fa riferimento alle risorse sulla rete:

<uses-permission android:name="android.permission.INTERNET" /> 

Scusate, un po 'in ritardo nella mia risposta. Stavo cercando un problema simile quando mi sono imbattuto in questo post.

+0

Aveva lo stesso problema, tutto quello che mi mancava era 'Environment.getExternalStorageDirectory() 'in' wv.loadDataWithBaseURL ("file: //" + Environment.getExternalStorageDirectory(), res, "text/html", "utf-8", null); ' –

0

utilizzare semplicemente:

webview.loadUrl("file:///android_asset/mypicture.jpg"); 
0
 WebView webView=(WebView)findViewById(R.id.my_wb); 
     String url = "YOUR URL"; 
     webView.getSettings().setLoadsImagesAutomatically(true); 
     webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
     webView.loadUrl(url); 
+3

Benvenuti in StackOverflow. Anche se questa risposta potrebbe funzionare, ti preghiamo di considerare l'aggiunta di ulteriori informazioni/descrizioni per aiutare gli altri utenti a capire cosa intendi. Grazie. –

Problemi correlati