2011年8月23日火曜日

WebView の使用

WebViewDemo という小さなアプリケーションでは、そこにウェブコンテンツを追加できるようにする方法をデモしています。apps-for-android プロジェクトでそれを見つけることができます。このアプリケーションではアクティビティに WebView をはめ込む方法とアプリケーションとウェブコンテンツとの間の双方向の通信を持たせることを可能とする方法をデモしています。

WebView はブラウザと同じレンダリングと JavaScript エンジンを使用していますが、アプリケーションの制御の下で実行します。WebView はフルスクリーンにしても他のビューに混ぜることも可能です。WebView のコンテンツはどこのものでも使えます。WebView はウェブからコンテンツをダウンロードしたり、assets ディレクトリに保存されたローカルファイルのものを使用することもできます。コンテンツはユーザのアプリケーションコードにより動的の作成されたもので使えます。この例では demo.html という名前のローカルファイルの HTML を使っています。

このアプリケーションは android をクリックすると手を挙げるという些細な機能しかありません。

もちろんちょっとした JavaScript も簡単に動かせます。ですが WebView のとても強力な機能を解説するために WebViewDemo ではもう少し複雑なことをしています。

まず、WebView の内部で実行中の JavaScript はアクティビティにあるコードを呼び出すことができます。新しいアクティビティを開始するようなアクションのトリガーとなる JavaScript を備える目的でこれを使用したり、データベースや ContentProvider からデータを取り出す目的で使用されたりします。この API はとても単純で、WebView  addJavascriptInterface()  を呼び出すだけです。JavaScript から見えるようにしたいメソッドと呼び出すときに使用する名前を持つオブジェクトを渡します。正確な構文は WebViewDemo. java にあるのでそれを参照してください。ここでは DemoJavascriptInterface オブジェクトで  "window.demo" が呼びだされる JavaScript を利用できるようにしています。

次に、Activity JavaScript のメソッドを呼び出すことができます。以下のように適切な JavaScript の呼び出しで loadUrl メソッドを呼び出すことがやるべきことのすべてです。

mWebView.loadUrl("javascript:wave()");

WebViewDemo ではその両方のテクニックを使用しています。android をクリックしたときアクティビティを呼び出し、今度はアクティビティが反対に、JavaScript 内の機能を呼び出します。WebView はとても強力であり、特に既存の HTML コンテンツがたくさんある場合には、アプリケーション構築を助ける貴重なツールとなることでしょう。そういった場面に遭遇したときは、今までに作成したアプリケーションにもまさにこのアプローチを採用したものがいくつかあります。

 

0 件のコメント:

コメントを投稿