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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:30:46