2013-01-17 31 views
6

Trong dự án của tôi, tôi có một tập tin:Lượt xem web trên Android tảiDataWithBaseURL cách tải hình ảnh từ nội dung?

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

Trong WebView tôi cần phải mở index.html (có hình ảnh).

Tôi cố gắng mã này:

Nhưng hình ảnh này không tải.

Nếu tôi đặt hình ảnh vào "asset" thư mục (MyProject/assets/) và làm cho hình ảnh baseUrl = "file:///android_asset" được tải chính xác;

Cách tải hình ảnh không chỉ từ thư mục nội dung gốc, mà còn từ assets/folder1?

+0

Tôi đã xem một bài đăng dài về chủ đề này một thời gian trước đây. Nếu bạn vẫn cần một số trợ giúp với nó, hãy tìm nó. http://devblog.morethanheroic.com/2017/01/03/how-to-create-an-app-from-a-static-website/ –

Trả lời

-6

Bạn đã cho phép internet chưa?

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

Nghiêm túc? nếu anh ta nói đưa chúng vào một thư mục hoạt động tốt có nghĩa là anh ta phải cho phép. – Darpan

8

thử như thế này

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); 

Để biết thêm thông tin thử link

hoàn hảo LoadDataWithBaseurl

+0

đã nghe rằng 'baseURL' của hàm này sẽ bỏ qua bất kỳ thứ gì xuất hiện sau đầu tiên /. – Darpan

1

thử này như thế này

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

Tôi nghĩ rằng bạn phải thiết lập cơ sở để tài sản và thêm các thư mục phụ để hình ảnh src của bạn như thế này:

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

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

này làm việc cho tôi trên Android 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

Phương thức đó 'readAssetFileAsString' ở đâu? – zygimantus

+1

đã thêm mã phương thức, mã này trước đây được lấy từ một bài đăng SO khác nhưng tiếc là tôi không có liên kết để ghi nhận chúng – behelit

Các vấn đề liên quan