web-dev-qa-db-ja.com

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

WebViewにロードしたい他のいくつかのリソース(cssファイルとJavascriptライブラリ)とともにローカルhtmlページがあります。これはどのように達成できますか?

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

174
klaus johan

最も簡単な方法は、おそらくWebリソースを assets folder に入れてから呼び出すことです。

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

JavaとWebview間の完全な通信について これを参照

更新:資産フォルダーは通常、次のフォルダーです。<project>/src/main/assetsこれは、<app>.iml file の資産フォルダー構成設定で変更できます。

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” />記事を参照 アセットフォルダーをAndroid St​​udioに配置する場所

333
Joe

おそらくこのサンプルが役立ちます:

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

この場合、WebView#loadDataWithBaseUrl()を使用するほうがWebView#loadUrl()よりも優れています!

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

url:url/pathすべてのJavaScriptファイルとhtmlリンクのディレクトリを指す文字列にはOriginがあります。 nullの場合、about:blankです。 data:hmtlファイルを含む文字列。たとえば、BufferedReaderで読み取ります

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

6
khaintt

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

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

   webView.loadUrl("file:///Android_asset/index.html");
0
Jimale Abdi