首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android WebView 加載本地圖片:需先寫 HTML 再 loadUrl,不可直接 loadData

     編輯:程式設計綜合問答

現象

webview.loadData(htmlString, "text/html", "UTF-8") 載入包含 <img src="file:///android_asset/xxx.png"> 的 HTML 時,圖片不顯示;但 webview.loadUrl("file:///android_asset/xxx.png") 可單獨顯示圖片。

原因

loadData 產生的頁面屬於 about:blank 來源,**不允許訪問 file:// 協議資源**(同源策略限制)。

正確方案

  1. 將 HTML 內容寫入 assets 目錄下的文件,如 assets/page.html:
<html>
<body>
<img src="large_image.png" width="100%"/>
</body>
</html>
  1. 使用 loadUrl 載入該 HTML 文件:
webview.loadUrl("file:///android_asset/page.html");

進階:動態生成 HTML 並保存到緩存目錄

File htmlFile = new File(getCacheDir(), "temp.html");
FileUtils.writeStringToFile(htmlFile, htmlContent, "UTF-8");
webview.loadUrl("file://" + htmlFile.getAbsolutePath());

關鍵點總結

  • assets 目錄下的圖片/HTML 必須通過 file:///android_asset/ 協議訪問。
  • loadUrl 建立正確的文件來源上下文,允許加載同目錄下的圖片。
  • 若圖片在內部存儲(/data/data/pkg/files/),需用 ContentProvider 暴露 URI 給 WebView。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved