Подтвердить что ты не робот

WebView не показывает JSAlert на устройствах Lollipop

Он не показывал JSAlert на любых устройствах. И затем я установил WebChromeClient:

webView.setWebChromeClient(new WebChromeClient() {

            @Override
            public boolean onJsAlert(WebView view, String url, String message,
                    JsResult result) {
                return super.onJsAlert(view, url, message, result);
            }

            @Override
            public boolean onJsPrompt(WebView view, String url, String message,
                    String defaultValue, JsPromptResult result) {
                return super.onJsPrompt(view, url, message, defaultValue,
                        result);
            }

        });

Теперь он отлично работает на всех устройствах до Lollipop. И не показывает никаких предупреждений на устройствах Lollipop.

Logcat говорит: " Невозможно создать диалог, контекст WebView - это не действие.

4b9b3361

Ответ 2

Для этого требуется сначала разрешение

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

Если вы используете Jscript для открытия в webview. Вы можете создать диалог так напишите этот код в jscript

<input type="button" value="Display dialog" onClick="displayDialog()" />
    <script>
        function displayDialog() {
            //alert("Javascript Dialog");
            Android.showDialog();
        }
    </script>
</input>

ИЛИ очень простой способ создать диалог в веб-просмотре

webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
            mResult = result;
            AlertDialog dialog = new AlertDialog.Builder(MyService.this)
                    .setTitle("test Dialog")
                    .setMessage("This is test dialog")
                    .setOnCancelListener(new CancelListener())
                    .setNegativeButton("Cancel", new CancelListener())
                    .setPositiveButton("Ok", new PositiveListener())
                    .create();
            dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
            dialog.show();

            return true;
        }
    });

Последнее, если эти выше не работают, вам необходимо создать пользовательский диалог в макете программно и добавить в него свое представление. Как

WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT, 
                WindowManager.LayoutParams.WRAP_CONTENT
                WindowManager.LayoutParams.TYPE_PHONE,
                0,
                PixelFormat.TRANSLUCENT);

params.gravity = Gravity.CENTER;

windowManager.addView(yourView, params);

Ответ 3

Расскажите, пожалуйста, код, который вы используете для создания WebView. Похоже, вы строите его с Контекстом службы или приложения, а не с Activity.

Попробуйте использовать контекст Activity.