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

Android应用中特定HTTP本地URL下载失败问题排查求助

排查思路:DownloadManager本地HTTP下载后getUriForDownloadedFile返回null

1. 先确认下载任务是否真的成功完成

广播仅通知下载任务结束,但不代表任务成功。先通过DownloadManager查询任务的实际状态:

val query = DownloadManager.Query().setFilterById(downloadID)
val cursor = mgr.query(query)
if (cursor.moveToFirst()) {
    val status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS))
    if (status != DownloadManager.STATUS_SUCCESSFUL) {
        val reasonCode = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_REASON))
        println("下载失败,错误码:$reasonCode")
        // 错误码对应原因可参考DownloadManager的ERROR_*常量,比如ERROR_CANNOT_RESUME、ERROR_FILE_ERROR等
    }
}
cursor.close()

如果状态不是STATUS_SUCCESSFUL,那uri为空是正常结果,优先解决下载失败的问题。

2. 检查Android的明文HTTP限制(API 28+)

Android 9及以上版本默认禁止明文HTTP请求,若你的应用targetSdkVersion >=28,本地HTTP请求会被系统拦截,直接导致下载失败:

  • 临时解决方案:在AndroidManifest.xml的<application>标签添加:
    android:usesCleartextTraffic="true"
    
  • 更安全的方案:创建res/xml/network_security_config.xml,仅允许指定本地IP的明文请求:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">192.168.77.123</domain>
        </domain-config>
    </network-security-config>
    
    然后在AndroidManifest.xml的<application>标签引用:
    android:networkSecurityConfig="@xml/network_security_config"
    

3. 检查本地HTTP服务器的响应头

部分本地服务器返回的响应头不符合DownloadManager的解析要求,导致文件无法正确保存:

  • 用curl或浏览器开发者工具查看响应头:
    curl -I http://192.168.77.123/FOLDER/Sample.mp3
    
  • 重点对比公网HTTPS链接的响应头,检查Content-Type(需为合法的音频类型,比如audio/mpeg)、Content-Disposition是否规范,缺失或错误的头信息可能导致DownloadManager无法识别并保存文件。

4. 验证本地网络的可用性

  • 用设备自带浏览器访问本地HTTP链接,确认能正常下载文件,排除网络本身的问题(比如服务器未启动、防火墙拦截、IP/端口配置错误)。
  • 检查设备和服务器是否在同一局域网,通过ping命令确认网络连通性。

5. 检查存储访问权限

虽然DownloadManager会将文件存在系统下载目录,但应用读取该文件需要READ_EXTERNAL_STORAGE权限:

  • 若你的应用targetSdkVersion >=23,需动态申请该权限;
  • 确认应用已获取该权限,否则后续openInputStream也会抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 07:36:28