WebView の確認ダイアログをどのように処理しますか? 質問する

WebView の確認ダイアログをどのように処理しますか? 質問する

WebView で Web ページを表示していますが、その Web ページにはボタンがあります。ボタンをクリックすると、確認ダイアログがポップアップ表示されるはずですが、WebView には表示されません。Android ブラウザーで同じ Web ページにアクセスするとポップアップ表示されます。WebView 内の Web ページから表示されるポップアップ ダイアログを処理する方法をご存知の方はいませんか?

ベストアンサー1

はい、答えを見つけました。ここにあります!

WebView で Web ページからのポップアップ確認を処理するには、WebChromeClient の onJsConfirm メソッドをオーバーライドして、ポップアップを Android Alert ダイアログとして表示する必要があります。これを行うためのコードは次のとおりです。

final Context myApp = this; 
final class MyWebChromeClient extends WebChromeClient {
    @Override
    public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
        new AlertDialog.Builder(myApp)
        .setTitle("App Titler")
        .setMessage(message)
        .setPositiveButton(android.R.string.ok,
                new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int which)
            {
                result.confirm();
            }
        })
        .setNegativeButton(android.R.string.cancel,
                new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int which)
            {
                result.cancel();
            }
        })
        .create()
        .show();

        return true;
    }
}

WebView で WebChromeClient を設定することを忘れないでください...

    mWebView.setWebChromeClient(new MyWebChromeClient());

注: これは私のコードではありませんが、見つけたもので、WebView で JavaScript 確認ダイアログを処理するのに完璧に機能します。

乾杯!

おすすめ記事