2013-01-17 12 views
6

W moim projekcie mam pliki:Android webview loadDataWithBaseURL jak ładować obrazy z zasobów?

"MyProject/assets/folder1/image1.jpg" 
"MyProject/assets/folder1/index.html". 

W Webview muszę otworzyć index.html (ze zdjęciami).

ja próbuje ten kod:

Ale obrazy nie załadowany.

Jeśli mogę umieścić zdjęcia do "Aktywa " Directory (MyProject/assets/) i uzupełnić baseUrl = "file:///android_asset" obrazy są ładowane poprawnie;

W jaki sposób ładować obrazy nie tylko z katalogu zasobów root, ale iz wersji assets/folder1?

+0

Jakiś czas temu zobaczyłem długi post na ten temat. Jeśli nadal potrzebujesz pomocy, sprawdź to. http://devblog.morethanheroic.com/2017/01/03/how-to-create-an-app-from-a-static-website/ –

Odpowiedz

-6

Czy masz pozwolenie na dostęp do Internetu?

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

Poważnie? jeśli mówi, że umieszczenie ich w jednym folderze działa dobrze, oznacza to, że musiał wyrazić zgodę. – Darpan

8

spróbować jak to

WebView webview = (WebView)this.findViewById(R.id.webview); 


String html = "<html><head><title>TITLE!!!</title></head>"; 
html += "<body><h1>Image?</h1><img src=\"icon.png\" /></body></html>"; 


webview.loadDataWithBaseURL("file:///android_res/drawable/", html, "text/html", "UTF-8", null); 

Aby uzyskać więcej informacji spróbować tej link

idealny LoadDataWithBaseurl

+0

słyszałam, że 'baseURL' tej funkcji zignoruje wszystko, co przychodzi po pierwszym /. – Darpan

1

starają się podoba

try { 
      String filePath = null; 
      filePath = "Your File path"; 
      Bitmap bitmap = null; 

      bitmap = BitmapFactory.decodeFile(filePath); 
      Log.v("Image data-->", "" + bitmap); 
      imageWidth = bitmap.getWidth(); 
      imageHeight = bitmap.getHeight(); 
      Log.e("Width", "" + imageWidth); 
      filePath = "file://" + filePath; 
      String html = "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta http-equiv=\"Content-Type\" content=\"text/html\";charset=utf-8\"/><title></title></head><body style=\"width:" 
        + imageWidth 
        + "px; height:" 
        + imageHeight 
        + "px; background:url(" 
        + filePath 
        + ") no-repeat; position:relative;\">" 
        + getDivTag(mapList) 
        + "</body></html>"; 

      Log.v("MIS", "" + html); 
      webview.getSettings().setSupportZoom(true); 
      webview.loadDataWithBaseURL(null, html, "text/html", "utf-8", null); 

      System.out.println(html); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
4

Chyba trzeba ustawić bazę do aktywów i dodać podkatalogi do obrazu src jest tak:

webView.loadDataWithBaseURL("file:///android_asset/", readAssetFileAsString("folder1/index.html"), "text/html", "UTF-8", null);

HTML: <img src="folder1/image1.jpg">

ten pracował dla mnie na Androidzie 5.1

private String readAssetFileAsString(String sourceHtmlLocation) 
{ 
    InputStream is; 
    try 
    { 
     is = getContext().getAssets().open(sourceHtmlLocation); 
     int size = is.available(); 

     byte[] buffer = new byte[size]; 
     is.read(buffer); 
     is.close(); 

     return new String(buffer, "UTF-8"); 
    } 
    catch(IOException e) 
    { 
     e.printStackTrace(); 
    } 

    return ""; 
} 
+0

Gdzie jest ta metoda "readAssetFileAsString"? – zygimantus

+1

dodano kod metody, ten kod został wcześniej pobrany z innego wpisu SO, ale niestety nie mam linku do ich podania – behelit

Powiązane problemy