WebViewでウェブページを表示する

Androidではウェブページを表示するためのビューとしてWebViewが用意されています。

このビューはURLを渡すだけでウェブページを表示することができ、また設定すればjavascriptも使えます。

ここでWebViewを使ってページを表示する手順とそのコードを紹介します。

パーミッションの追加

WebViewを使うにはAndroidManifest.xmlに次のパーミッションを追加してネット接続できるようにします。

<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.SiteChecker.sitechecker" 
    android:versionCode="1" 
    android:versionName="1.0" >
    <uses-permission android:name="android.permission.INTERNET" />
        <!-- 上の1行を追加 --> 

WebViewの使用例

まず、WebViewを持つ次のようなレイアウトファイルを作ります。

<?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/searchWebView" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:layout_weight="1" />
</LineaLayout>

次に次のようにコード側でウェブページをWebViewに表示します。ここではgoogleのトップページを読み込んでみます。

public class MainActivity extends FragmentActivity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final WebView webView = (WebView) view.findViewById(R.id.searchWebView);

        webView.loadUrl("https://www.google.co.jp/");
        webView.setWebViewClient(new WebViewClient()
        {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon)
            {
                /*ページの読み込みが始まった時の処理*/
                Log.i("MainActivity : ", "読み込み開始");
            }

            @Override
            public void onPageFinished(WebView view, String url)
            {
                /*ページの読み込みが終わった時の処理*/
                Log.i("MainActivity : ", "読み込み終了");
            }

            @Override
            public void onReceivedError(WebView view, int errorCode, String description,
                                                 String failingUrl)
            {
                /*読み込めなかったときの処理*/
                Log.i("MainActivity : ", "読み込み失敗");
            }
        });
    }
}

setWebViewClientメソッドにWebViewClientリスナーを渡すことでページの読み込み時やエラー時の処理ができます。

またWebViewで新しいURLが渡されたときはもともとAndroidに搭載されているウェブブラウザを起動してしまうので次のようにアプリ側のWebViewでURLを処理できるようにしています。

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
    view.loadUrl(url);
    return true;
}

もし逆にtrueではなくfalseを返せば外部のウェブブラウザからページを開くようにすることもできます。

関連項目
プライバシーポリシー