WebView でアセットに登録した HTML ファイルをロードする方法

WebView でインターネットにアクセスする時の権限設定 では、WebView にウェブページ http://www.google.com/ をロードする方法を示しました。

ところが、当然ながら Google のサイトはインターネット上のサイトですから、インターネットのアクセス権限の設定が必要でした。

ではネットワークからの HTML ファイルのダウンロードを想定せずに、HTML をアプリケーションに添付して配布する場合はどうなるでしょうか。

asset ディレクトリへの HTML の保存

Android の開発フレームワークにおいて、asset フォルダは生アセットファイル (raw asset files) を格納するために利用できます。

asset ファイルに保存したファイルは、そのままの形で .apk ファイルに含まれ、 ファイルシステムにアクセスするのと同様の形でアクセス可能になります。

asset フォルダに次のスクリーンショットのように hello.html という名前の HTML ファイルを保存したとします。

Android WebView

このときに、どのようにしたらこの hello.html を WebView にロードできるでしょうか。

実はこれは簡単で、次のように URI を指定するだけで OK です。

package com.keicode.android.test;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class WebViewTest1Activity extends Activity {

	WebView webView;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        webView = (WebView)findViewById(R.id.webView1);
        webView.loadUrl("file:///android_asset/hello.html");
    }
	
}

"file:///android_asset/ファイル名" で OK ということです。

もちろん、この場合インターネットへのアクセスは発生しないので、 インターネットアクセス権限設定 android.permission.INTERNET は不要です。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Android 開発入門