首页 > 解决方案 > 较低 api 设备上的 Webview 行为更改 API 28

问题描述

我的应用程序的配置是这样的: targetSdk 28 minsdk24 compileSdk 28

当我尝试使用 targetSDK 28 加载广告时,它不会加载,这与 targetSDK 为 27 的情况不同,在这种情况下,广告在我的具有 API 27 的设备中成功加载。

我从这里通读了 API 28 中 WebView 的行为变化。

在 API 28 中由进程分隔的基于 Web 的数据目录,您应该在每次初始化 WebView 之前使用 WebView.setDataDirectorySuffix() ,但显然我的设备不能使用这种方法,因为它是 API 27,同样,这可能不是问题,因为我的应用程序在使用 API 27 的设备和使用 API 28 的模拟器中都不会崩溃。

通常,如果这是错误应该导致崩溃。而且,如果这是问题,只能通过 API 28 中存在的 setDataDirectorySuffix() 方法解决,而不是早期设备的 API,有没有办法解决这个问题而不会出现 NoSuchMethodError 异常?

同样在 API 28 cleartextTrafficPermitted() 中自动返回 false,我已经在我的应用程序中为可能的域创建并设置了网络安全配置,但它也不会影响这种情况。

我现在只有临时解决方案将 targetSDK 版本设置为 27,但我对导致此问题的原因以及该怎么做感到困惑,任何帮助将不胜感激。

我还用 API28 模拟器对此进行了测试,即使我已经能够使用 setDataDirectorySuffix() 方法,仍然遇到同样的问题,但我可能定义了错误的目录。

标签: androidwebviewandroid-networkingandroid-9.0-pie

解决方案


推荐阅读