2012-04-19 11 views
1

私は動的に構築されたhtmlページを持っています。いくつかの画像はインターネットのURLや、Assetsフォルダからロードしたいものから来ています。ページはインターネットイメージを正しくレンダリングしますが、ローカルイメージのロードを拒否します。私は次のものを含む多くのバリエーションを試していますが、ローカル画像はロードされません。すべてがインターネットURLからロードされている場合は、ページ全体が正しくレンダリングされますが、実際には変更されない静的コンテンツについてはインターネットに行きたくありません。何か案は?webview.loadData()はローカルイメージをロードしません

文字列pageData = "一連のhtmlマークアップ...";

// - 私はこのフォーラムでスパムフィルタにより取得するには、以下のimgタグから<を削除する必要がありました - >

// - > InboundのPageDate + =「IMG - 1を試してみてくださいsrc = 'file:/// data/data /(私のパッケージ)/files/image1.png' alt = '私のイメージ'> ";

// - 試し2 - > pageData + = "img src = '/ data/data /(my package)/image1.png' alt = 'マイイメージ'>"; "+ msgstr" "+" img src = 'src =' data:image/jpeg; base64、 '"+ readAssetFileAsBase64(" image1.png ")+"' alt = '私のイメージ '> ";

// - try 4 - > 爆発物!ページを使用してレンダリングされる

..

webview.loadData(InboundのPageDate、 "テキスト/ HTML"、NULL);

私も

webview.loadDataWithBaseURL試してみた( "ファイル://"、S、 "text/htmlの"、 "窓-1252"、null)を。

ページが動的に構築されているため、.loadUrl()を使用することはできません。私はディスクに動的ページを書くことができると思う.loadUrl()を呼び出すが、それほど効率的ではないようだ。あなたはそのベースURLが適切なもの

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

である必要はありませんし、その後、あなたのようなものを使用して資産フォルダで物事を参照することができますが、あなたはベースURLとHTMLをロードすることを確認する必要があり

答えて

4

この

file:///android_asset/image1.jpg 

「android_asset」パスはまだ試したことのないものだそうです。あなたのファイルがあなたの資産フォルダにない場合は、ContentProviderでそれらを提供する必要があります。私のサイトからこのチュートリアルをご覧ください:http://responsiveandroid.com/2012/02/20/serving-android-webview-resources-with-content-providers.html

+1

実際には、webViewの最初のパラメータとして "file:/// android_asset /"を使用できます.loadDataWithBaseURLの場合、ベースURLが既に指定されているので、のようにHTMLの画像を参照できます。 –

+0

が大いに役立った。ありがとうございました –

関連する問題