HTMLファイルをWebViewにロードする


188

WebViewにロードしたいローカルhtmlページと、それが指している他のいくつかのリソース(cssファイルとJavaScriptライブラリ)があります。どうすればこれを達成できますか?

おそらく最良の方法ではありませんが、まだ実験中です。


私にとっては、ドットhtml -webView.loadUrl( "file:/// android_asset / filename");をドロップした場合に機能しました。
2015

4
@Joeの回答を受け入れたくない理由はありますか?
ClassA '15

3
webview.loadUrl( "file:///android_asset/sample.html"); - こちらをクリックしてください
C49

回答:


349

最も簡単な方法は、おそらくあなたのウェブリソースをassetsフォルダーに入れて、それを呼び出すことでしょう:

webView.loadUrl("file:///android_asset/filename.html");

JavaとWebview間の完全な通信については、こちらをご覧ください

更新:アセットフォルダーは通常、次のフォルダーです。<project>/src/main/assets これは、<app>.imlファイルのアセットフォルダー構成設定で次の ように変更できます

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” />Android Studioでアセットフォルダーを配置する場所を 参照してください。


6
この問題は本当にFAQです。
Shihpeng

2
アセットの使用に非常に不利な場合は、おそらくそれを文字列からロードすることもできます...(stackoverflow.com/questions/4543349/load-local-html-in-webviewを参照)
Joe

24
これは正解としてマークする必要があります。
gorodechnyj 2012年

6
@ SK9開始アクティビティクラスの名前を変更し、AndroidManifest.xmlそれを反映するように更新しない場合など、他のアセットまたは予期されるファイルが欠落している場合も同様です。(個人的には、URL /ファイルパスを文字列リソースに入れ、そこからアクセスすることをお勧めします。パスはプログラムの他のすべての文字列データと一緒になりますが、アセット/の問題に直接関連しているわけではありませんリソースの依存関係。)
JAB

7
アセットフォルダーの作成方法がわからない場合は、「アプリ」->「新規」->「フォルダー」->「アセットフォルダー」を右クリックし、「完了」をクリックします。Android Studioは正しいパスにアセットフォルダーを作成します。また、htmlファイルを新しいアセットフォルダに移動するだけです。参考:stackoverflow.com/questions/18302603/...
Yuchao周

27

おそらくこのサンプルが役立つでしょう:

  WebView lWebView = (WebView)findViewById(R.id.webView);
  File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>");
  lWebView.loadUrl("file:///" + lFile.getAbsolutePath());

3
外部メモリにHTMLがある例では、アプリケーション内にHTMLをパッケージ化するのが最善です
JonathanGarcíaSep

1
「file:///」は、ローカルデバイスディレクトリのHTMLファイルを使用する場合に重要です。ありがとう
ralphgabb

5

この場合、を使用するWebView#loadDataWithBaseUrl()方がWebView#loadUrl()

webView.loadDataWithBaseURL(url, 
        data,
        "text/html",
        "utf-8",
        null);

url:url / pathすべてのJavaScriptファイルとhtmlリンクがその起源を持つディレクトリを指す文字列。nullの場合、about:blankです。data:たとえば、BufferedReaderで読み取られたhmtlファイルを含む文字列

詳細:WebView.loadDataWithBaseURL(java.lang.String、java.lang.String、java.lang.String、java.lang.String、java.lang.String)


3
データ変数とは何ですか?例を挙げてください。
IgorGanapolsky 2017年

0

受け入れられた答えは私のために働いていません、これは私のために働くものです

WebSettings webSetting = webView.getSettings();
    webSetting.setBuiltInZoomControls(true);
    webView1.setWebViewClient(new WebViewClient());

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

お使いの携帯のバージョンは何ですか?
ジマールアブディ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.