Как обрабатывать диалог подтверждения веб-просмотра?

17

Я показываю веб-страницу в WebView и на веб-странице, есть кнопка. При нажатии кнопки открывается окно подтверждения, но оно не отображается в моем WebView. Это всплывающее окно, если я перехожу на ту же веб-страницу в браузере Android. Кто-нибудь знает, как обрабатывать всплывающие диалоги, исходящие с веб-страницы внутри вашего WebView?

    
задан brockoli 28.04.2010 в 04:01
источник

1 ответ

40

Хорошо, нашел ответ, и вот он!

Чтобы обрабатывать всплывающее подтверждение, поступающее с веб-страницы в вашем WebView, вам необходимо переопределить метод onJsConfirm в WebChromeClient, чтобы отобразить всплывающее окно в виде диалогового окна 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;
    }
}

Не забудьте установить свой WebChromeClient в свой WebView ...

    mWebView.setWebChromeClient(new MyWebChromeClient());

Обратите внимание: это не мой код, но я нашел его и отлично работает для обработки диалогов подтверждения JavaScript в WebView!

Ура!

    
ответ дан brockoli 28.04.2010 в 04:41
источник