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

19

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

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

1 ответ

43

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

Чтобы обрабатывать всплывающее подтверждение, поступающее с веб-страницы в вашем 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
источник
  • У меня есть просмотр mvc и <a href="javascript :;" onclick="Logout_Confirm ()" id="SignOut"> Выйти </a>, но не работает на эмуляторе Android. Мне нужна помощь в этом, –  Muhammad Mubashir 23.04.2013 в 14:29
  • Спасибо brockoli ... После небольшого эксперимента кажется, что достаточно просто вернуть false из метода onJsConfirm, чтобы показать вам WebView диалог - по крайней мере, в JellyBean ... По умолчанию WebChromeClient уже возвращает false , поэтому webView.setWebChromeClient (новый WebChromeClient ()); сделал работу для меня! –  Stevie 21.06.2013 в 18:22