1

ich versuche auf meine HTML-Dateien von Android-Erweiterungsdatei zu laden (.obb) mit WebView wieBilder laden html <img> Tag von Android-Erweiterungsdatei

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 kehrt INPUTSTREAM- gelesen von ZipResourceFile Funktion (Zip-Datei Bibliothek)

Es lädt HTML erfolgreich in Webview, aber alle Bilder im HTML werden nicht angezeigt.

Ich denke, es ist, weil es nicht auf Bilddateien über IMG-Tags zugreifen kann.

zum Beispiel meiner HTML-Dateien img-Tags wie

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

Relative Weg scheint nicht funktioniert, weil HTML-und Bilddateien in OBB Datei komprimiert werden.

Wie kann ich es beheben?

Antwort

1

Sie können die OBB-Datei mit Storage montieren:

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

Dann können Sie diesen Pfad verwenden, um einen Weg, um Ihre Dateien zu konstruieren: die zurückgegebene Pfad ist die Wurzel zu Ihrem OBB:

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

eine Verwendung dieser Pfad Ihr Bild

<img src="your_path" /> 
+0

Bilddateien sind nicht im Vermögen Ordner zu laden. Sie werden derzeit als .obb-Datei unter /Android/obb// –

+0

gespeichert, sodass der src der Pfad zur .obb-Datei + Pfad zu Ihrem Bild in Ihrer Datei sein sollte. Überprüfen Sie die Änderung –