You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 5.1三星J3 2016调用WebView.loadUrl报UnsupportedOperationException如何解决

异常触发原因

  • 该问题是Android 5.1对应版本的系统WebView内核的已知bug:旧版AwContents.loadUrl实现逻辑中,会主动修改传入的请求头Map,调用remove方法移除特定请求头字段。
  • Kotlin中mapOf()方法在仅传入1组键值对时,默认返回的是不可变的SingletonMap实例,该类型不支持remove等修改操作,触发UnsupportedOperationException。
  • 只有搭载该版本WebView的设备(如你提到的Android 5.1三星Galaxy J3 2016)会触发此问题,高版本WebView已经修复了修改外部传入Map的逻辑,因此不会崩溃。

可行修复方案

  • 方案1:传入可变Map实例(最稳妥,全版本兼容)
    替换mapOf创建不可变Map的逻辑,改用可变的HashMap或者mutableMapOf创建请求头,示例代码:
    val extraHeaders = HashMap<String, String>().apply {
        put("Referer", "https://my.site.url")
    }
    webView.loadUrl(state.url, extraHeaders)
    
    也可以直接使用mutableMapOf:
    val extraHeaders = mutableMapOf("Referer" to "https://my.site.url")
    webView.loadUrl(state.url, extraHeaders)
    
  • 方案2:针对低版本做兼容(可选)
    如果不想修改全局的请求头创建逻辑,可以仅对Android 6.0以下系统传入可变Map副本。不过方案1的实现成本更低,没有额外副作用,更推荐使用。

内容的提问来源于stack exchange,提问作者Axbor Axrorov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:42:02