ホーム >  Android > WebView

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クライアントの指定をします。

取得できるリクエスト
  • onReceiveError()
      エラー時に呼ばれます。
  • shouldOverrideUrlLoading()
      URLジャンプ前に呼ばれます。
    ここで「flase」を返す処理をしない場合は、標準のブラウザアプリが起動します。

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")

webview1


HTMLの読み込み(ローカルサイトの場合)
webView.loadUrl("file:///android_asset/test.html")
ソース内では、コメントアウトしています。ローカル時は、外部サイトをコメントアウトして下さい。

ローカルで読み込むには、assetsフォルダ内にtest.htmlとimg1.pngを設置して下さい。

webview2

P0405WebViewEx

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>


アプリで保持するHTMLファイルを指定する場合は、プロジェクト直下assetsにファイルを配置する必要があります。

P0405WebViewEx.java

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();
  }
}