WebView でインターネットにアクセスする時の権限設定

アプリケーションにブラウザの機能を提供するウィジェットである WebView。

ネットワークにアクセスする場合には、インターネットアクセスの権限設定が必要です。

この資料では、WebView の基本的な使い方として、レイアウトにウィジェットを配置して、google.com を表示するまでをみていきましょう。

WebView の基本的な使い方 - 権限設定

ここでは次のように画面に www.google.com を表示するアプリケーションを作ります。

Android WebView

レイアウトリソースは次のようにします。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="test2.android.keicode.com.webviewtest1.MainActivity">

    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</RelativeLayout>

LinearLayout の中に WebView を全画面で表示して、その ID を webView1 としています。

コードからは次のように ID をもとに findViewById で参照を取得。loadUrl メソッドで http://www.google.com/ をロードしています。

package test2.android.keicode.com.webviewtest1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = (WebView) findViewById( R.id.webView1);

        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url){
                return false;
            }
        });

        webView.loadUrl("http://www.google.com/");
    }
}

以前はページを更新しない限り、WebViewClient の設定をする必要はありませんでしたが、 最新の WebView では WebViewClient のインスタンスの設定は必要になっています。(考えてみればこちらの方が正しいですよね)

インターネットアクセス権限設定 android.permission.INTERNET

しかし、ここまでだと、次のように失敗するはずです。

Android WebView

インターネット上のリソースにアクセスするには、AndroidManifest.xml に インターネットアクセス用のパーミッション android.permission.INTERNET を設定します。

Android WebView

尚、Eclipse の ADT では次のように android.permission.INTERNET を選びます。

Android WebView

以上で www.google.com が表示できるはずです。

なお、asset フォルダに HTML ファイルを配置する場合は、このパーミッション設定は不要です。

2/21/2016 : 最新の SDK 及び Android Studio に合わせて更新

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Android 開発入門