0

私のAndroidアプリでは、htmlファイルをwebviewにロードしたいのですが、このhtmlファイルは「data/data/com.myapp/files/index.html」に保存されます。関連する JavaScript ファイルを使用して読み込むことはできますが、「data/data/com.myapp/files/img/image.png」から画像を読み込もうとすると機能しません。これは私がそれをやろうとしている方法です:

webView.loadDataWithBaseURL(getFilesDir()+"/img/", html, "text/html","utf-8", ""); //html is my html string I get from index.html

私も試しました:

webView.loadUrl(getFilesDir()+"/img/"+index.html");

私のhtmlファイルには

 <img id="image" src="/img/image.png"/>

ファイルがディスクに読み込まれていることを確認しましたが、webview に表示できず、画像の表示が空白のままです。私はそれを機能させることができません。だから私の質問は:それは可能ですか?はいの場合、誰かが方法を教えてもらえますか?

検索したところ、他の人にも同様の問題があることがわかりましたが、解決策はどれも機能していません。

編集:ファイルをアセットディレクトリに置くことは、私にとってはオプションではありません。これは既にテスト済みであり、機能します。

ここで見つけた次のコードを試してみました: webview で sdcard に保存された画像を読み込む

String base = getFilesDir(); 
String imagePath = base + "/test.jpg"; 
String html = ("<html>
            <head>
            </head>
            <body>
            <img src=\""+ imagePath + "\">
            </body>
            </html>
            "); 
mWebView.loadData(html, "text/html","utf-8");

しかし、まだ成功していません。どうやら、質問をした人にとってはうまくいったようです。外部ストレージでもテストしましたが、結果は同じです。すべての権限は manifest.xml にあります。だから私は本当に問題が何であるか分かりません。提案やアドバイスをいただければ幸いです。

4

3 に答える 3

1

assetsAndroid プロジェクト内のフォルダーに静的ファイルを配置することを検討し、次を使用してファイルをロードしてみてください。

mWebView.loadUrl("file:///android_asset/html/index.html");

そして、HTML ファイルから相対パスを使用して画像、スタイルを参照します。

たとえば、あなたの場合、ディレクトリ構造は次のようになります。

PROJECT-ROOT
 |-src/
 |-assets/
    |-html/index.html
      |-img/image.png
      |-css/style.css

index.htmlこの後、 Web ページを作成する場合と同様に、内部で通常の html タグを使用できます。例えば。<img id="image" src="img/image.png"/>また<link rel="stylesheet" type="text/css" href="css/style.css">

以下を使用して JavaScript を有効にすることを忘れないでください。

WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
于 2013-02-10T00:35:40.690 に答える
0

問題が解決しました。実際には、不正な形式のデータが原因でした。正しいファイルを確認して電話のメモリに追加すると、機能し始めました。

于 2013-03-26T12:19:57.007 に答える