読者です 読者をやめる 読者になる 読者になる

satohu20xx's diary

思ったことをつらつらと

webviewを使ってWebアプリを作成する際に必要な設定まとめ

android

最近JavaScriptがはやってる
この流行でNativeとWebアプリのハイブリッドアプリを作成することが多くなろうからそういうときに使うWebViewの設定をまとめてみる。

JavaScriptを使用可能にする

これがないと始まらない

    webView.getSettings().setJavaScriptEnabled(true);

plugin使用可能

Flashとか使うときに必要

    webView.getSettings().setPluginsEnabled(true);

キャッシュを使用しない

開発の最中はキャッシュをOFFにしないと変わらない場合があるからわかりにくい

    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

バックキーで戻る

これをしないとActivityが閉じてしまう。閉じてもいい場合は設定する必要ないけど。

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
            if(webView.canGoBack() ) {
                webview.goBack();
                return false;
            }
        }
        return super.onKeyDown(keyCode, event);
    }

Linkを同一WebViewで開く

WebViewClientを設定してあげれば同一WebViewで開ける

    webView.setWebViewClient(new WebViewClient());

mailtoとかmarketとかを別アプリで開く

このままだとリンクはすべてWebViewで開こうとしてしまうからhttpとhttp以外は別ActivityにIntentを投げる

    @Override
    public boolean shouldOverrideUrlLoading(WebView webView, String url)
    {
        if(url.startsWith("http:") || url.startsWith("https:")) {
            return false;
        }

        Uri uri = Uri.parse(url);
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(intent);
        return true;
    }

まとめ

ほかにもぱっと浮かぶものとしてActivityとJavaScritの連携とかあるけど、それはいろんなところに書いてあるからそっちを参照してほしい。これぐらいやっておけばAndroidで簡易的なブラウザとして動くんじゃないかな。

忘れてることがもしあったら追記します。
ほかにもこんな設定あったらってのがあったら教えてくださいな。