WebViewでWebブラウザを組み込む

Androidアプリケーションに「Webブラウザ」の機能を組み込む時には、WebViewクラス(Webブラウザコンポーネント)を使います。

WebViewは、AndroidのWebブラウザ機能をコンポーネント化したものです。WebViewをActivityやViewに追加し「表示したいデータ」を指定すると、それだけでWebブラウザとして機能(HTML文書などをレンダリング)します。

とりあえず、適当なHTML文書を表示するならコンストラクタでWebViewを作成してloadData()などのデータ設定メソッドで文字列やネットワーク上のURIを指定する形になるでしょう。

たとえば、「独自のHTML文字列を表示するWebView」を組み込んだAndroidアプリケーション(Activity)を作成する場合は、ActivityのonCreate(作成時イベント)に以下の処理を記述します。

android.webkit.WebView.WebView wb = new android.webkit.WebView(this);

setContentView(wb);

wb.loadData("<!DOCTYPE html><html><body><p style=\"color: #cc8000;\">WebView Test</p></body></html>", "text/html", null);

HTMLとCSSを使うと、文字や背景、各要素の配置などを簡単に設定できるので、アプリケーションの説明ダイアログなどでレイアウトされた文書を表示するのに使えるでしょう。あるいは、AndroidのネイティブアプリにWebアプリとして開発したWebページを一部取り込むようなことも可能かもしれません。

ただし、WebViewはAndroidアプリケーション内のコンポーネントとして機能することになるため、セキュリティ上の制約を受けます。ネットワーク上のデータを読み込む場合は、マニュフェストでネットワークを利用する宣言を行う必要があり、デフォルトではJavaScriptも無効になっているので、注意が必要です(JavaScriptは、setJavaScriptEnabled ()メソッドで有効化できます)。

WebViewでは、単に文書を表示するだけでなくアプリケーションとWebView内のJavaScriptを連携させるような仕組みも用意されています。


創作プログラミングの街