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を返せば外部のウェブブラウザからページを開くようにすることもできます。
© Kaz