日期:2024-01-12  浏览次数:55 次

这个错误是因为 Android 9(API 级别 28)及更高版本引入了网络安全性政策,要求应用程序默认使用加密连接(HTTPS),不再允许明文(HTTP)通信。如果你的应用在使用明文通信,就会出现这个 java.net.UnknownServiceException 异常。

有几种解决方法:

  1. 使用 HTTPS 进行通信

    • 建议将你的服务端切换到使用 HTTPS 协议,这是提高通信安全性的最佳方式。
    • 为你的域名配置 SSL 证书,以确保数据传输的加密。
  2. 修改网络安全配置

    • 如果你暂时需要在开发或测试阶段使用明文通信,可以通过在 res/xml/network_security_config.xml 中定义网络安全配置,允许明文通信。

    • AndroidManifest.xml 文件中的 <application> 元素内,添加 android:networkSecurityConfig 属性,并指向你的配置文件,例如:

      
       

      xmlCopy code

      <application android:networkSecurityConfig="@xml/network_security_config" ...> ... </application>

    • res/xml/network_security_config.xml 文件中,可以添加如下内容:

      
       

      xmlCopy code

      <?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <!-- You can include your custom trust anchors here --> <certificates src="system" /> </trust-anchors> </base-config> </network-security-config>

    • 请注意,这仅仅是为了调试或测试阶段使用,不建议在生产环境中使用明文通信。

请记住,将网络通信切换到 HTTPS 是一个更加安全和推荐的做法。