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

Android新手求助:MVVM词典APP已授权网络仍提示无连接(附Github链接)

网络连接问题排查方案

1. 核对Manifest权限与配置

  • 确保同时添加基础网络权限和网络状态权限:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  • 如果API接口是HTTP协议(非HTTPS),Android 9及以上默认禁止明文流量,必须在application标签下添加:
    android:usesCleartextTraffic="true"
    

2. 验证网络状态判断逻辑

  • 先排查第三方网络库的判断逻辑,临时用系统API做测试:
    fun isNetworkAvailable(context: Context): Boolean {
        val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val network = cm.activeNetwork ?: return false
        val capabilities = cm.getNetworkCapabilities(network) ?: return false
        return capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) &&
                capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
    }
    
    调用该方法打印结果,若返回true但第三方库提示无网络,直接替换第三方库逻辑即可。

3. 排查Retrofit请求链路

  • 检查BaseUrl是否正确,别遗漏http://或https://前缀,确认域名拼写无误
  • 给OkHttpClient添加日志拦截器,查看请求实际发送情况:
    val client = OkHttpClient.Builder()
        .addInterceptor(HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
        .build()
    
    通过日志确认:请求是否触发、URL是否正确、服务器是否返回响应,若有拦截器需检查是否篡改请求或错误返回无网络响应。

4. 适配Android版本特性

  • Android 12+对后台网络访问有严格限制,若请求在后台触发,需移至前台执行,或使用WorkManager处理,也可给服务配置android:foregroundServiceType="dataSync"
  • Android 13+后台网络请求需确保APP拥有对应后台权限(前台请求不受影响)

5. 排除环境干扰

  • 关闭测试设备的代理配置,代理错误会导致请求无法正常发送
  • 切换WiFi/移动数据网络,排查是否为特定网络的问题
  • 直接用浏览器或Postman调用API接口,确认接口本身是否可用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:16:20