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 не является активностью ».

Solutions Collecting From Web of "WebView не показывает JSAlert на устройствах Lollipop"

В версии 40 WebView имеется ошибка, исправленная в версии 42.

Проверьте проблему, указанную в

https://code.google.com/p/chromium/issues/detail?id=478204

Сначала требуется разрешение

 <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

 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); 

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

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