Webview 未显示 JavaScript 警报

Webview not showing JavaScript alerts

我们使用 android webview 构建了一个混合应用程序,我使用 phone (LG Nexus 4) 对其进行了测试。 android 应用程序过去曾正确显示来自网站的 JavaScript 警报,但最近它已停止显示相同的警报。

每当从应用程序中抛出警报但未显示任何内容时,它就会抛出以下错误。

 Cannot create a dialog, the WebView context is not an Activity

我怀疑此行为是在 google 最近更新 WebView 组件后开始的。我现在 运行 在 Android 5.0.1 上,webview 版本是 40 (1832189-arm)

我会尝试回滚更新并检查,但我不能要求所有用户都这样做。还有其他类似的问题吗?有解决办法吗?

更新 我已经卸载了 WebView 组件的更新并进行了检查。警报显示正常。如果这是一个问题,我可以在哪里报告?

这是来自JavaScript alert not working in Android WebView的回答 检查此 link 和最后一条评论,您必须为您的目的使用 WebChromeClient。

http://code.google.com/p/android/issues/detail?id=752

这似乎是 WebView build 40 中引入的错误。根据我记录的问题,它已在版本 42 中修复。

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

要在 Android WebView 上获取 JavaScript 警报,请添加以下代码行:

mWebView.setWebChromeClient(new WebChromeClient());

在以下代码行之后:

webSettings.setJavaScriptEnabled(true);

最后应该是这样的:

webSettings.setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());