1

Je suis en train de charger mes fichiers HTML à partir du fichier d'extension Android (.obb) en utilisant WebView commeCharger les images à l'aide html <img> tag de fichier d'extension Android

String prompt = ""; 
    WebView webview = (WebView) rootView.findViewById(R.id.webview); 

    try { 
     InputStream html = getAssetFileDescriptor("www/" + mResult.getTitle() + ".html") 
       .createInputStream(); 
     byte[] b = new byte[html.available()]; 
     html.read(b); 
     prompt = new String(b); 
     html.close(); 

    } catch (IOException e) { 
     Log.e("Webview", "Couldn't open webpage"); 
    } 

    webview.loadData(prompt, "text/html", "utf-8"); 

* getAssetFileDescriptor retours INPUTSTREAM lu par la fonction ZipResourceFile (fichier Zip bibliothèque)

Il charge le HTML dans Webview avec succès mais toutes les images dans le HTML n'apparaissent pas.

Je suppose que c'est parce qu'il ne peut pas accéder aux fichiers image via les balises img.

par exemple, mes fichiers html ont des balises img comme

<img src="./image1.jpg" /> 

Chemin relatif semble ne fonctionne pas parce que les fichiers html et image sont compressés dans un fichier OBB.

Comment puis-je résoudre ce problème?

Répondre

1

Vous pouvez monter le fichier OBB en utilisant StorageManager:

StorageManager storageManager = (StorageManager)app.getSystemService(Context.STORAGE_SERVICE); 
boolean queued = storageManager.mountObb(<path>, null, new OnObbStateChangeListsner() {...}); 

Ensuite, vous pouvez utiliser ce chemin pour construire un chemin vers vos fichiers: le chemin de retour est la racine de votre OBB:

storageManager.getMountedObbPath(...) + "/image1.jpg"; 

une utilisation dans cette voie pour charger votre image

<img src="your_path" /> 
+0

fichiers image ne sont pas dans le dossier actif. ils sont actuellement stockés en tant que fichier .obb dans /Android/obb// –

+0

alors le src devrait être le chemin vers le fichier .obb + le chemin de votre image dans votre fichier, vérifiez le modifier –