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

Android DownloadManager下载文件时不显示通知问题求助

问题排查与修复方案

1. 适配Android 13+通知权限

Android 13(API Level 33)引入了POST_NOTIFICATIONS运行时权限,你仅适配了Android 11及更低版本的存储权限,未申请该通知权限的话,下载通知会被系统直接拦截。

  • 首先在AndroidManifest.xml中添加权限声明:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
  • 在触发下载前,主动向用户申请该运行时权限,用户同意后再执行下载逻辑。

2. 修正代码逻辑错误

你的代码存在两处明显问题,可能影响通知正常展示:

  1. 错误截断下载地址:Uri.parse(chatModel.chatItem.substringBeforeLast("."))会把正常下载链接后缀去掉,大概率导致下载请求异常
  2. 路径处理混淆:命名为directory的变量实际指向目标文件而非父目录,调用mkdir()会创建和目标文件同名的文件夹,引发不可预期的逻辑异常

修正后的代码如下:

private fun downloadFileIntoDevice(){
    val fileExtension = chatModel.chatItem.substringAfterLast(".")
    // 先创建父目录
    val parentDir = File(Environment.getExternalStorageDirectory().path + "/jobsFolder")
    if(!parentDir.exists()){
        parentDir.mkdirs() // 用mkdirs确保多级目录创建成功
    }
    // 生成目标文件
    val targetFile = File(parentDir,
        UUID.randomUUID().toString().substring(0,5) + "." + fileExtension)

    // 直接传入完整下载地址,不要截断
    val downloadRequest = DownloadManager.Request(Uri.parse(chatModel.chatItem))
    downloadRequest.setTitle("الملف")
    downloadRequest.setDescription("تحميل الملف")
    downloadRequest.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI
            or DownloadManager.Request.NETWORK_MOBILE)
    downloadRequest.setDestinationUri(Uri.fromFile(targetFile))
    // 下载中、下载完成后都展示通知,如需完成后自动隐藏可换回VISIBILITY_VISIBLE
    downloadRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
    // Android 8.0+主动指定通知渠道,避免渠道被默认关闭
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        downloadRequest.setNotificationChannelId(DownloadManager.Request.NETWORK_NOTIFICATION_CHANNEL_ID)
    }
    val downloadID =  downloadManager.enqueue(downloadRequest)
}

3. 其他排查点

  • 检查设备系统通知设置,确认你的APP通知权限、下载通知类别都处于开启状态
  • 部分国产ROM的省电策略、拦截规则会默认隐藏后台下载通知,可尝试把APP加入电池优化白名单后测试
  • 确认downloadManager实例是通过context.getSystemService(DownloadManager::class.java)正确获取的

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:12:01