新人成長記録19th

今回は、アプリ内で簡単なブラウザ機能が必要な時に使用するWebViewを学習しようと思います

ブラウザというと標準ブラウザがあるのですが、そちらで表示したいときは、Intentで表示をします
標準ブラウザにない機能を実装したい時や、不要な機能を排除したシンプルなブラウザをアプリ内で独自に使用したい場合には、WebViewを使用した方がいいでしょう

WebView

WebViewの基本的な実装は以下のようになります

    public void onCreate(Bundle bundle){
        super.onCreate(bundle);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        WebView webView = new WebView(this);
        mWebView.setWebViewClient(new WebViewClient());
        setContentView(webView);
    }

ビルドするとまだWebページは表示されていないはずです
ここで重要なのは、アプリ内で完結させるために、setWebViewClient()でクライアントの設定をしているところです
これがないとリンク等からページを遷移する時に標準ブラウザが表示されてしまいます

ここから任意のWebページを表示するためには、loadUrlメソッドを使って表示します
例えば、Googleの検索ページを表示したい時には以下のようにします

        webView.loadUrl("https://www.google.co.jp/");

 

また、ボタンを設置して戻るや進む機能の実装をすることも可能です
実装例は以下のようになります

    public void onClick(View view){
        switch (view.getId()){
            case R.id.next:
                if(webView.canGoForward()){
                    webView.goForward();
                }
                break;
            case R.id.back:
                if(webView.canGoBack()){
                    webView.goBack();
                }
                break;
        }

canGoForward()で進むことができるかの確認をしてからgoForward()で実行します
戻るに関してもcanGoBack()でチェックしてgoBack()で戻る処理を入れます

自分で実装するとなったら、履歴としてどこかに前のページのURLを保存しておいて、それを辿ったりと、おそらく苦労するかと思いますので、WebView自体にこういった機能が実装されているのは、大変うれしいですね

終わりに

WebViewClientを独自クラスに拡張することで、読み込み開始時や読み込み終了時に処理を追加するなどといったことも可能でなので、思ったよりも色々できそうであるとは思います
開発者の方は、オリジナルで作成したら一番使いやすいブラウザが完成するかもしれませんね

単純にページを表示するだけなら簡単に実装はできるようですが、javascriptとの連携は、JavaScriptInterfaceを使うことでできるようです
少し手間がかかるようですので、次回はそちらについて学んでいこうと思います

火曜日担当:poppy



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム