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

Android Studio Java开发中WebView无法打开HTTP链接如何解决?

Android WebView无法加载HTTP明文资源解决方案

该问题的根本原因是Android 9.0(API Level 28)及以上版本系统默认禁止应用使用未加密的HTTP明文流量,所有HTTP请求都会被系统拦截,只有HTTPS加密流量可以正常通行。

可根据实际场景选择以下解决方案:

  • 方案1:全量升级为HTTPS协议
    官方推荐的最优方案,将应用需要加载的所有页面、视频、静态资源链接都替换为HTTPS协议,无需修改任何应用配置,同时可以保障通信安全,适配所有系统版本。

  • 方案2:全局允许明文流量
    适合测试场景或暂时无法完成HTTPS升级的情况,只需在AndroidManifest.xml的<application>标签中添加如下属性即可:

    <application
        ...
        android:usesCleartextTraffic="true"
        ...>
    
  • 方案3:自定义网络安全配置(仅开放指定域名的HTTP权限)
    比全局开放更安全的配置方式,仅给需要加载HTTP资源的特定域名开放明文权限:

    1. 在res/xml目录下新建network_security_config.xml文件,内容如下:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <!-- 替换为你需要允许HTTP访问的域名,includeSubdomains为true表示同时允许子域名 -->
            <domain includeSubdomains="true">example.com</domain>
            <domain includeSubdomains="true">your-cdn-domain.com</domain>
        </domain-config>
    </network-security-config>
    
    1. 在AndroidManifest.xml的<application>标签中引用该配置:
    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config"
        ...>
    
  • 方案4:WebView混合内容适配(解决HTTPS页面内嵌HTTP资源的问题)
    如果是HTTPS页面中嵌入了HTTP视频、图片等子资源无法加载,需要额外给WebView开启混合内容权限,初始化WebView时添加如下配置:

    // 允许HTTPS页面加载HTTP类型的子资源
    webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
    

    可选参数说明:MIXED_CONTENT_ALWAYS_ALLOW表示允许所有混合内容,MIXED_CONTENT_COMPATIBILITY_MODE表示仅允许系统判定为安全的必要混合内容,安全性更高。

  • 注意:全局开启明文流量、允许所有混合内容都会降低应用的通信安全性,容易引发数据窃听、篡改等风险,生产环境建议优先选择HTTPS全量升级、指定域名开放权限的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:24:03