Отключить всплывающие окна и оповещения в веб-обозревателе Android

Я использую webview с поддержкой javascript, поскольку он требуется в моем приложении в полный рабочий день. Моя проблема в том, что мне нужно избегать всплывающих окон при загрузке url в моем веб-просмотре, есть ли способ сделать это?

Я столкнулся с методом onJsAlert (), но в соответствии с документацией андроидов

Tell the client to display a javascript alert dialog. If the client returns true, WebView will assume that the client will handle the dialog. If the client returns false, it will continue execution. 

И это не то, что я хочу. Я хочу избежать всплывающих окон и предупреждений (включая подсказку и подтверждение), любая помощь будет оценена

Благодаря!

Вы можете попробовать переопределить оповещение, подтвердить и т. Д. Возможно, добавьте флаг, когда разрешать и когда не разрешать показывать предупреждение. JavaScript: переопределение предупреждения ()

Я попробовал подход, описанный в принятом ответе, от Kalel Wade, и, введя JavaScript в каждом событии прогресса, я смог заблокировать всплывающие окна. Однако я нашел то, что кажется гораздо более элегантным.

Если вы расширяете WebChromeClient, вы можете переопределить его метод onJsAlert () и заблокировать встроенный обработчик для предупреждений. Пока вы на нем, вы, вероятно, захотите заблокировать вызовы для подтверждения () и prompt ():

 WebChromeClient webChromeClient = new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { result.cancel(); return true; } @Override public boolean onJsConfirm(WebView view, String url, String message, JsResult result) { result.cancel(); return true; } @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) { result.cancel(); return true; } }; webView.setWebChromeClient(webChromeClient); 

Учитывая, что вы видите предупреждения JavaScript, я считаю, что вы уже назначили WebChromeClient. (Если вы этого не сделаете, оповещения не будут поддерживаться.) Таким образом, нужно просто добавить вышеперечисленные ограничения.

Обязательно вызовите result.cancel () перед возвратом. По моему опыту, если вы этого не сделаете, механизм JavaScript, похоже, виснет; Кнопка остается в нажатом состоянии, и последующее взаимодействие не регистрируется.