确定哪些 Android Kitkat 设备遭受 Webview 文件上传对话框错误

Determine which Android Kitkat devices suffer from Webview fileupload dialog bug

由于 Android Kitkat 版本(最常见的是 4.4.2)中存在一个已知错误,不允许用户在 WebView 中点击任何 HTML 文件元素后打开文件上传对话框,可以 Android 自己判断当前设备是否存在这个bug?

仅通过 Android 版本来确定不是一个好的解决方案,因为并非所有设备 运行 4.4.2 都会遇到此错误。

我也不得不处理这个问题。最终我认为这是不值得的,因为没有那么多设备修改现有的 webkit,所以我应用了仅基于版本号的解决方法 (SDK_INT == 19)

然而,如果 webkit 确实是罪魁祸首(而不是其他系统 class),您可能需要检测 webkit 版本:

来自https://developer.chrome.com/multidevice/webview/overview#what_version_of_chrome_is_it_based_on_

The WebView shipped with Android 4.4 (KitKat) is based on the same code as Chrome for Android version 30. This WebView does not have full feature parity with Chrome for Android and is given the version number 30.0.0.0. The updated WebView shipped with Android 4.4.3 has the version number 33.0.0.0.

这种检测方法不是很优雅,但是因为没有精确的方法来检测设备上是否存在此错误,最好的方法是通过 javascript 计算用户点击了多少次 HTML 文件元素。

如果点击计数器超过某个值(因为用户试图让它一遍又一遍地工作),您就知道它不起作用。目前为止,最常见的带有此错误的版本是 4.4.2,因此您可以仅在检测到此 Android 版本时激活此计数器以获得额外的精度层。

就像我说的那样,这种检测方法非常混乱,但是如果 Android 有错误,这就是它所得到的。没有遇到此错误的用户不太可能多次单击 HTML FILE 元素。