戌印-INUJIRUSHI- (Androidあれこれ)

Androidのプログラミングをメインにしてます。記事に貼られたソースコードはダブルクリックすることで行番号をはずしてコピーすることができます。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
08

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ウェブブラウザ (ウェブアプリ) : WebView

Android アプリ内でウェブページを表示するには、ブラウザ機能を有する WebView を使います。

API Reference: WebView
ソフトウェア技術ドキュメントを勝手に翻訳 - 3. ウェブアプリの WebView への組み込み

インターネット上にあるウェブページを表示するには AndroidManifest.xml にインターネット接続のパーミッションを追加する必要があります。
※ アプリ内の html ファイルを参照するだけなら不要です
<uses-permission android:name="android.permission.INTERNET" />

WebView に表示するウェブページを設定するには WebView#loadUrl(String url) に対象の URL を渡します。
WebView#setWebViewClient(WebViewClient client)WebView にクライアント設定しないと他のブラウザアプリを起動してしまいます。基本的には loadUrl とセットで設定してください。
WebView webView = new WebView(this);
webView.setWebViewClient(new WebViewClient() {});
webView.loadUrl("http://www.google.com");

アプリ内のファイル (assets) を表示する場合は WebView#loadUrl(String url) にファイルのパスを指定します。
assets 内のファイルパスは file:///android_asset/ から始まります。
パスの最後に s をつけないように気をつけてください。
こちらはクライアント設定をする必要はありません。
WebView webView = new WebView(this);
webView.loadUrl("file:///android_asset/test.html");

WebView では JavaScript は標準で無効となっているため、有効にするには以下の1行を追加します。
webView.getSettings().setJavaScriptEnabled(true);
JavaScript を有効にすることで XSS (Cross Site Scripting) などのセキュリティの脆弱性を有する可能性があるとの警告文が表示されます。
Using setJavaScriptEnabled can introduce XSS vulnerabilities into you application, review carefully.
この警告文はクラス、または、メソッドに @SuppressLint("SetJavaScriptEnabled") を追加することで消すことができます。


ズームイン/ズームアウト機能を追加するには以下の1行を追加します。
webView.getSettings().setBuiltInZoomControls(true);

これで簡単なブラウザ機能を有したアプリを作成することができます。

以下、今回の記事で作成したサンプルソース。

■ 画面イメージ
android_webview.png

■ activity_web.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>

■ WebViewActivity.java
package jp.inujirushi.android.sample;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebViewActivity extends Activity {

@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
WebView webView = (WebView) findViewById(R.id.webView);

// WebView 自身をクライアントにしてページを表示させる
webView.setWebViewClient(new WebViewClient() {});

// JavaScript を有効にする
webView.getSettings().setJavaScriptEnabled(true);

// ズームイン/ズームアウトを許可する
webView.getSettings().setBuiltInZoomControls(true);

// Google のサイトを表示する
webView.loadUrl("http://www.google.com");
// webView.loadUrl("file:///android_asset/test.html");
}
}
スポンサーサイト

Comments

Leave a Comment


Body
プロフィール

とむ・やむくん

Author:とむ・やむくん
管理人について

Windows 7 / 64bit
Eclipse 4.2 Juno (日本語パッチ済)

スポンサーサイト
最新トラックバック
検索フォーム
ブロとも申請フォーム
QRコード
QR
Twitter
2013/01/04 19:00 カウント開始

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。