Ответ 1
В версии 40 WebView имеется ошибка, исправленная в версии 42.
Проверьте проблему, указанную в
Он не показывал 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 - это не действие.
В версии 40 WebView имеется ошибка, исправленная в версии 42.
Проверьте проблему, указанную в
Для этого требуется сначала разрешение
<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);
Расскажите, пожалуйста, код, который вы используете для создания WebView. Похоже, вы строите его с Контекстом службы или приложения, а не с Activity.
Попробуйте использовать контекст Activity.