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添加日志拦截器,查看请求实际发送情况:
通过日志确认:请求是否触发、URL是否正确、服务器是否返回响应,若有拦截器需检查是否篡改请求或错误返回无网络响应。val client = OkHttpClient.Builder() .addInterceptor(HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) .build()
4. 适配Android版本特性
- Android 12+对后台网络访问有严格限制,若请求在后台触发,需移至前台执行,或使用WorkManager处理,也可给服务配置
android:foregroundServiceType="dataSync" - Android 13+后台网络请求需确保APP拥有对应后台权限(前台请求不受影响)
5. 排除环境干扰
- 关闭测试设备的代理配置,代理错误会导致请求无法正常发送
- 切换WiFi/移动数据网络,排查是否为特定网络的问题
- 直接用浏览器或Postman调用API接口,确认接口本身是否可用
内容的提问来源于stack exchange,提问作者CUBE
相关产品推荐
相关产品推荐

