首页 > 解决方案 > Oreo - 无法通过 WebView 中的 setUserAgentString 设置新值

问题描述

我在运行 API 27 (8.1.0) 的设备中的 WebView 中遇到问题。

我在 userAgentString 中传递了我的参数,php 页面根据该参数加载适当的数据。当我第一次打开 WebView 时,它运行良好。

但是,每当我在第一次之后打开 WebView 时(每次加载时我都会调用 setUserAgentString,并使用新值),它会保留 userAgentString 的旧值,因此不会加载正确的数据。无论我是在同一个活动中并重新使用同一个 WebView,还是移动到使用新 WebView 实例的不同活动,都会发生这种情况。

以下设备给出了这种奇怪的行为 -

  1. 谷歌 Pixel 2XL,版本 8.1.0
  2. 小米米 A1,版本 8.1.0

...并且 webview 在以下设备上运行良好,没有显示这种行为 -

  1. 三星 GALAXY Tab SM-T825,版本 8.0.0
  2. 摩托 G4,版本 7.0.0
  3. HTC Desire 526,版本 4.4.2

我认为这可能与 Android Webview 实现如何更改为 Oreo 中的 Chrome 有关。

但是,无论我在开发人员设置中设置为“Webview 实现”如何,行为都没有改变,这意味着这可能不是原因。

此外,只有当我清除数据或进行全新安装时,才会重置 userAgentString 值。

我已经阅读了数十篇关于 SO 的帖子,并尝试了各种与 WebView 和 WebSettings 相关的方法,但我还没有设法找到解决方案。

我在这里想念什么?

标签: androidandroid-webviewandroid-8.1-oreo

解决方案


我最近遇到了这个问题,问题是该设备有一个过时的 Chrome WebView 框架。只需通过 Play 商店更新它,问题就会解决。


推荐阅读