ブログ

Android WebViewでWordPressのページを表示

とある案件を依頼されて、開発しているんだけど、お客様の要件からすると、ガッツリネイティブアプリで開発するよりも、WEBサイトを構築してWebViewで参照した方が、予算も抑えられて良さそう。

ってことで、サイト側はWordPressで構築。
早速、WebViewでアクセスしてみたんだけど、サイトの至る所が正常に表示されない。

JavaScriptを有効にする

WebViewって、何もしないで表示するとJavaScriptが無効になっているんですね。
JavaScriptを有効にするにはこんな感じ。

// JavaScript有効
webView.getSettings().setJavaScriptEnabled(true);

LocalStorageを有効にする

よくあるメニュー。あれもJavaScriptを使用してみるみたい。
タップしてもリンク先に遷移しない。
エラーを追ってみたら「LocalStorage」を有効にしないといけないみたい。
表示速度を上げる為でしょうか?端末にデータを保存してるんですね。これは知らなかった。

LocalStorageを有効にするにはこんな感じ。

String databasePath = this.getApplicationContext().getDir("localstorage", Context.MODE_PRIVATE).getPath();

// LocalStorage有効
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setDatabasePath(databasePath);

シングルウィンドウで開く

あとはaタグでtarget=”_blank”指定してて複数ウィンドウが起動してしまうと面倒なことになるので
シングルウィンドウで開く指定。

// シングルウィンドウで開く
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
webView.getSettings().setSupportMultipleWindows(false);

リンクのクリックを有効にする

WebViewはそのままでは、リンクをタップしても何も遷移しないのでリンクのクリックを有効にする。

// リンクのクリックを有効
webView.setWebViewClient(new WebViewClientLink());

メソッドの中はこんな感じ。

/**
 * webViewでタップされたリンク先を開く
 *
 * @param view(WebView)
 * url(String)
 * @return boolean
 * @see
 *
 */
private class WebViewClientLink extends WebViewClient {
	@Override
	public boolean shouldOverrideUrlLoading(WebView view, String url) {
		view.loadUrl(url);
		return true;
	}
}

ブラウザの戻るを実装する

あとは端末の「戻る」ボタンが押された時の制御。
ブラウザの表示履歴がある時は、「ブラウザの戻る」と同じ制御にして、無い場合はアプリ終了。

/**
 * 「戻る」押下時に呼び出される
 *
 * @param キーイベント
 *            event(KeyEvent)
 * @return boolean
 * @see
 *
 */
public boolean dispatchKeyEvent(KeyEvent event) {
	if (event.getAction() == KeyEvent.ACTION_DOWN) {
		switch (event.getKeyCode()) {
		case KeyEvent.KEYCODE_BACK:
			// ネットワークに接続している時だけ
			if (mCommon.isConnected(me)) {
				if (webView.canGoBack()) {
					// 閲覧履歴がある場合は戻る
					webView.goBack();
					return true;
				}
			}
		}
	}
	return super.dispatchKeyEvent(event);
}

これで、標準のブラウザアプリとほぼ同じ挙動になります。
てか、そう考えるとブラウザアプリって、とても簡単なアプリなのかもしれません。

株式会社woodsmallの小林でした。
http://woodsmall.co.jp/

スポンサードリンク

  • このエントリーをはてなブックマークに追加

関連記事

スポンサードリンク

 

30代半ばのオッサンが起業した話

プロフィール

kobayashi-profile
代表取締役CEO 小林 高志
1999年からシステムエンジニアとして、クライアントサーバのシステム構築、WEBシステムの開発、Androidアプリの企画・開発、iPhoneアプリの企画・マーケティング等に携わる。
2012年からカメラマンとして都内のスタジオに従事。
2012年、株式会社woodsmall創業。
2013年5月に代表取締役に就任。
自身の半生を綴った書籍を出版するのが、個人的な目標。
趣味は、カメラ・車・バイク・料理。

代表取締役の略歴はこちら

社長のブログについて

検索してもヒットしなかったアプリ開発に関する技術的な記事から、その時に思ったことなどを素直に書き綴っています。

スポンサードリンク

Facebook

twitter

対応エリア

株式会社woodsmallは、千葉県をはじめ関東エリア、関西エリアでのホームページ制作、アプリ開発(Android、iPhone)、システム開発、チラシ制作を承ります。

【千葉県エリア】
船橋市、市川市、習志野市、浦安市、鎌ヶ谷市、松戸市、柏市、成田市、佐倉市、千葉市中央区、千葉市花見川区、千葉市稲毛区、千葉市美浜区、千葉市若葉区、千葉市緑区、白石市などの千葉県エリア

【東京都エリア】
足立区、荒川区、板橋区、江戸川区、大田区、葛飾区、北区、江東区、品川区、渋谷区、新宿区、杉並区、墨田区、世田谷区、台東区、中央区、千代田区、豊島区、中野区、練馬区、文京区、港区、目黒区などの東京都エリア

【神奈川県エリア】
横浜市、川崎市、藤沢市、茅ヶ崎市、大和市、海老名市、座間市、綾瀬市、平塚市、寒川町、大磯町、二宮町などの神奈川県エリア

【埼玉県エリア】
さいたま市、川口市、蕨市、戸田市などの埼玉県エリア

【関東・関西エリア】
その他、茨城県、栃木県、群馬県の関東エリア、長野県、新潟県の甲信越エリア、大阪府の関西エリア、全国からのご依頼に対応させて頂きます。
(遠方の場合は電話やメール、LINE、Skypeでの打合せとなります。)

ページ上部へ戻る