Android -WebView-
WebViewクラス
WebViewは、HTMLを表示するコンポーネントです。
Webビューを生成するには、WebViewクラスを使用します。
外部サイトへ接続するためには、AndroidManifest.xmlへの通信機能のパーミッションの 設定が必要です。
コンストラクタ
- WebView(Context context)
- WebView(Context context, AttributeSet attrs)
- WebView(Context context, AttributeSet attrs, int defStyle)
- WebView(Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing)
主なメソッド
WebSettings | getSettings() | WebViewの設定をする為に使用し、WebSettingsを取得します。 |
void | loadUrl(String url) | HTMLの読み込み先の指定します。 外部サイトの場合は、引数urlにURLを指定します。 アプリで保持するHTMLの場合は、引数urlに「file:///android_asset/ファイル名」を指定します。 その際の読み込むファイルは、プロジェクト直下のassetsフォルダに配置します。 |
void | setWebViewClient(WebViewClient client) | WebViewの通知リクエストの処理を行うためにWebViewクライアントの指定をします。 取得できるリクエスト
|
WebSettingsクラス
WebViewの設定は、WebSettingsオブジェクトを取得して行います。
主なメソッド
synchronized void |
setJavaScriptEnabled(boolean flag) | JavaScriptの有効・無効設定 |
void | setSavePassword(boolean save) | パスワードの保存の有効・無効設定 |
void | setSaveFormData(boolean save) | フォームデータの保存の有効・無効設定 |
void | setSupportZoom(boolean support) | ズーム機能の有効・無効設定 |
WebViewサンプル
HTMLの読み込み(外部サイトの場合)
webView.loadUrl("http://mitoroid.com/category/android/test_data/test")
HTMLの読み込み(ローカルサイトの場合)
webView.loadUrl("file:///android_asset/test.html")
ソース内では、コメントアウトしています。ローカル時は、外部サイトをコメントアウトして下さい。
ローカルで読み込むには、assetsフォルダ内にtest.htmlとimg1.pngを設置して下さい。
AndroidManifest.xml
※ 外部サイトへ接続を許可する為に、通信機能(INTERNET)を追加します。
赤行の1行を追加します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="info.mitosys.P0405webviewex"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".P0405WebViewEx"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
P0405WebViewEx.java
アプリで保持するHTMLファイルを指定する場合は、プロジェクト直下assetsにファイルを配置する必要があります。
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class P0405WebViewEx extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// WebViewの生成
WebView webView = new WebView(this);
// WebViewの設定をするためにWebSettingsオブジェクトを取得
WebSettings settings = webView.getSettings();
// JavaScript有効・無効の設定
settings.setJavaScriptEnabled(true);
// パスワードの保存の有効・無効の設定
settings.setSavePassword(false);
// フォームデータの保存の有効・無効の設定
settings.setSaveFormData(false);
// ズーム機能の有効・無効の設定
settings.setSupportZoom(false);
// WebViewの通知リクエストの処理
webView.setWebViewClient(new WebViewClient() {
// URLジャンプする前に呼ばれる
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 外部ブラウザでなく内部ブラウザを利用
return false;
}
// エラー時に呼ばれる
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
showDialog(P0405WebViewEx.this, "", "通信エラー");
}
});
// 表示するビューの指定
setContentView(webView);
// HTMLの読み込み(外部サイトの場合)
webView.loadUrl("http://mitoroid.com/category/android/test_data/test.html");
// HTMLの読み込み(ローカルサイトの場合)
// webView.loadUrl("file:///android_asset/test.html");
}
private void showDialog(Context context, String title, String text) {
AlertDialog.Builder ad = new AlertDialog.Builder(context);
ad.setTitle(title);
ad.setMessage(text);
ad.setPositiveButton("OK", null);
ad.show();
}
}