WebView でインターネットにアクセスする時の権限設定
アプリケーションにブラウザの機能を提供するウィジェットである WebView。
ネットワークにアクセスする場合には、インターネットアクセスの権限設定が必要です。
この資料では、WebView の基本的な使い方として、レイアウトにウィジェットを配置して、google.com を表示するまでをみていきましょう。
WebView の基本的な使い方 - 権限設定
ここでは次のように画面に www.google.com を表示するアプリケーションを作ります。
レイアウトリソースは次のようにします。
<?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
しかし、ここまでだと、次のように失敗するはずです。
インターネット上のリソースにアクセスするには、AndroidManifest.xml に インターネットアクセス用のパーミッション android.permission.INTERNET を設定します。
尚、Eclipse の ADT では次のように android.permission.INTERNET を選びます。
以上で www.google.com が表示できるはずです。
なお、asset フォルダに HTML ファイルを配置する場合は、このパーミッション設定は不要です。
2/21/2016 : 最新の SDK 及び Android Studio に合わせて更新