2012-04-19 46 views
1

我有一個動態構建的html頁面。某些圖像來自Internet網址和其他我想從資源文件夾加載的圖像。頁面正確呈現互聯網圖像,但是,它只是拒絕加載本地圖像。我嘗試了許多變化,包括以下,沒有人會加載本地圖像。如果一切從網址加載,整個頁面呈現正確,但我真的不想去互聯網靜態內容不會改變。有任何想法嗎?webview.loadData()不會加載本地圖像

String pageData =「一堆html標記...」;

// - 我只好從下面的img標籤取下<到這個論壇上獲得通過垃圾郵件過濾器 - >

// - 嘗試1 - > pageData + =「IMG src ='file:/// data/data /(my package)/files/image1.png'alt ='我的圖像'>「;

// - try 2 - > pageData + =「img src ='/ data/data /(my package)/image1.png'alt ='我的圖像'>」;

// - try 3 - > pageData + =「img src ='src ='data:image/jpeg; base64,'」+ readAssetFileAsBase64(「image1.png」)+「'alt ='我的圖像'>「;

// - 嘗試4 - > 炸藥!

該頁面使用呈現..

webview.loadData(pageData, 「text/html的」,NULL);

,但我也試過

webview.loadDataWithBaseURL( 「文件://」,S, 「text/html的」, 「窗口-1252」,NULL);

由於頁面是動態構建的,因此我無法使用.loadUrl()。我想我可以將動態頁面寫入磁盤的調用.loadUrl(),但似乎並不那麼高效。

回答

4

你需要確保你載入一個基本URL的HTML,雖然基本URL並不需要是什麼,相關

webView.loadDataWithBaseURL("fake://not/needed", htmlString, mimeType, encoding, ""); 

,然後你可以在Assets文件夾中使用類似的東西引用這

file:///android_asset/image1.jpg 

的「android_asset」路徑似乎你還沒有嘗試過的東西。如果您的文件不在您的資產文件夾中,那麼您需要使用ContentProvider提供它們,請參閱本教程從我的網站:http://responsiveandroid.com/2012/02/20/serving-android-webview-resources-with-content-providers.html

+1

實際上,您可以使用「file:/// android_asset /」作爲webView的第一個參數.loadDataWithBaseURL,那麼你可以像這樣在你的html中引用圖像,因爲基本URL已經被指定。 – 2013-08-13 23:59:01

+0

幫了很多。謝謝 – 2014-07-23 08:36:02