2010-06-18 1 views
6

J'essaie d'afficher le contenu d'un fichier html avec la méthode loadDataWithBaseURL() dans android. J'ai juste une chaîne qui contient les données du fichier Html dans une chaîne appelée source et je passe ensuite à la méthode.Est-il possible d'afficher l'image avec la méthode loadDataWithBaseURL() dans android?

pour

par exemple
String source; //contain html tags with images 
View.loadDataWithBaseURl(null,source,"text/html","UTF-8","about:blank"); 

Les données affichées en vue est très bien. Mon problème est que si mon fichier html contient des images alors je ne pouvais pas l'afficher? comment puis-je faire cela?

+1

Le code que vous avez publié ne fonctionnera pas car la source sera vide et View.load ne fonctionnera que si vous avez un objet View qui commence par une lettre majuscule. Mais vous dites que la vue est correcte donc je suppose que ce n'est qu'un exemple de code. – Janusz

Répondre

5

vous pouvez le faire, si les images dans la source utilisent des emplacements relatifs pour la src, alors vous devez définir la baseUrl à la "base" de l'emplacement des images. par exemple, si vous chargez la page d'accueil de Google à partir de la source, il ressemblerait à ceci:

View.loadDataWithBaseURI("http://google.com",source,"text/html","UTF-8","about:blank"); 

qui raconte l'WebView où les images seront chargées à partir.

En note, je ne pense pas que les URIs "file: //" fonctionnent dans la vue web, pour des raisons de sécurité.

+1

J'utilise un fichier URI pour charger des images dans un webview à partir de la mémoire interne et cela fonctionne bien – Janusz

3

"file : /// android_res/brut/" comme URL de base et de mettre vos fichiers dans res/premières dans votre projet.

res/raw/index.html

res/raw/image.jpg

InputStream htmlStream = getResources().openRawResource(R.raw.index); 
Reader is = new BufferedReader(new InputStreamReader(htmlStream, "UTF8")); 

// read string from reader 
String html = readFile(is); 

webView.loadDataWithBaseURL("file:///android_res/raw/", html, 
          "text/html", "UTF-8", null); 
+0

Cela ne fonctionne pas avec Android 2.1 ... – Patrick

1

Par exemple, si vous souhaitez utiliser des images de la carte SD, votre code devrait ressembler à ceci:

final String path = Environment.getExternalStorageDirectory() + File.separator + "YourFolderName"); bookView.loadDataWithBaseURL("file://" + path, htmlTextWithHeadAndBody, "text/html", "UTF-8", "");

Questions connexes