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

升级Android System WebView后JavaScript接口调用失效问题咨询

问题根因

这个是Android System WebView v92.0.4515.105版本的已知缺陷,而非Android 11的新增配置要求:该版本在运行Android 11的三星设备上存在JS交互权限校验逻辑异常,会错误拦截通过loadUrl触发的JS方法调用,其他品牌设备因为厂商定制的系统层逻辑差异,未触发这个异常。

另外你当前的JS调用代码存在两处语法问题,也可能导致执行失败:一是第二个字符串参数缺少开头单引号,二是代码末尾缺少右括号,修正后的基础写法为this.webView.loadUrl("javascript:updateGps('dummy','dummy')");

可行解决方案

  • 替换JS调用方式
    Android 4.4及以上系统官方推荐使用evaluateJavascript替代loadUrl执行JS代码,v92版本WebView对loadUrl方式的JS调用增加了更严格的同源校验,三星Android 11设备上恰好触发了异常拦截,替换写法如下:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    webView.evaluateJavascript("updateGps('dummy','dummy')", new ValueCallback<String>() {
        @Override
        public void onReceiveValue(String result) {
            // 若不需要处理JS方法的返回结果,此处可留空
        }
    });
} else {
    // 兼容Android 4.4以下系统
    webView.loadUrl("javascript:updateGps('dummy','dummy')");
}
  • 新增适配配置
    在你的setupWebViewClients方法中补充如下配置,适配高版本WebView的权限要求:
// 开启内容访问权限
webView.getSettings().setAllowContentAccess(true);
// 针对三星Android 11设备单独关闭硬件加速,规避渲染层异常导致的交互失效
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.R && Build.MANUFACTURER.equalsIgnoreCase("samsung")) {
    webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
  • 临时降级方案
    若应用来不及发版更新,可引导用户在系统设置的应用列表中找到「Android System WebView」,选择卸载更新回退到v91及更早版本,即可临时恢复功能。

内容的提问来源于stack exchange,提问作者Junia Montana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 08:48:01