WebView でアセットに登録した HTML ファイルをロードする方法
WebView でインターネットにアクセスする時の権限設定 では、WebView にウェブページ http://www.google.com/ をロードする方法を示しました。
ところが、当然ながら Google のサイトはインターネット上のサイトですから、インターネットのアクセス権限の設定が必要でした。
ではネットワークからの HTML ファイルのダウンロードを想定せずに、HTML をアプリケーションに添付して配布する場合はどうなるでしょうか。
asset ディレクトリへの HTML の保存
Android の開発フレームワークにおいて、asset フォルダは生アセットファイル (raw asset files) を格納するために利用できます。
asset ファイルに保存したファイルは、そのままの形で .apk ファイルに含まれ、 ファイルシステムにアクセスするのと同様の形でアクセス可能になります。
asset フォルダに次のスクリーンショットのように hello.html という名前の HTML ファイルを保存したとします。
このときに、どのようにしたらこの 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 は不要です。