targetSdkVersion升级至31后Android应用INTERNET权限失效求助
问题分析与解决方案
针对你升级targetSdkVersion 31后AJAX请求返回状态码0(UNSENT)的问题,结合Android 12(API 31)的权限及网络规则变化,给出以下排查和修复方案:
1. 确认基础权限配置
首先检查AndroidManifest.xml中INTERNET权限是否正确声明,且必须放在<application>标签外部:
<!-- 必须添加,位置在<application>标签之前 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 可选但建议添加,用于检测网络状态 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2. 处理明文流量限制
Android 9及以上默认禁止HTTP明文流量,如果你请求的是HTTP接口,需在<application>标签中添加明文流量许可:
<application ... android:usesCleartextTraffic="true" ...>
若需仅允许特定域名的明文流量,可创建res/xml/network_security_config.xml文件,然后在<application>中引用:
<!-- network_security_config.xml 内容 --> <?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">你的接口域名.com</domain> </domain-config> <base-config cleartextTrafficPermitted="false" /> </network-security-config> <!-- AndroidManifest.xml 中引用 --> <application ... android:networkSecurityConfig="@xml/network_security_config" ...>
3. 调整WebView核心设置
如果你的应用基于WebView(或Cordova/PhoneGap等框架),需确保WebView开启必要权限:
WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); // 必须开启,否则AJAX无法执行 webSettings.setAllowUniversalAccessFromFileURLs(true); // 若从本地HTML发起请求需开启 webSettings.setDomStorageEnabled(true); // 启用DOM存储,部分AJAX依赖此设置 webSettings.setAllowFileAccess(true);
4. Cordova/PhoneGap框架专属配置
若使用Cordova,需检查config.xml的访问规则,并升级到兼容API31的版本:
- 确认跨域访问规则:
<access origin="*" /> <!-- 允许所有域名的AJAX请求,或指定具体域名 --> <allow-navigation href="*" /> <!-- 允许WebView导航到所有域名 --> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" />
- 升级Cordova Android平台版本(需支持API31,推荐10.1.0及以上):
<platform name="android"> <preference name="android-targetSdkVersion" value="31" /> </platform>
执行命令更新平台:
cordova platform rm android && cordova platform add android@10.1.0
5. 排查后台网络限制
如果AJAX请求在应用后台发起,Android 12对后台任务的网络访问有额外限制:
- 确保应用在前台状态下测试请求
- 若需后台访问网络,需配合
POST_NOTIFICATIONS权限(Android 13+),并通过前台服务执行网络请求
内容的提问来源于stack exchange,提问作者fcaserio
相关产品推荐
相关产品推荐

