关于DownloadManager消息通知的问题

xiaohuh421 2016-05-20 05:24:46
最近在使用系统的下载管理来下载东西
但是遇到一个问题, 就是如何清除下载完成后的通知问题

在文件下载完成后, 由于我设置了
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
完成时也显示通知.

我的程序中增加了一个广播接收器, 收到这个完成消息.
因为是下载的APK, 如果下载完成时, 我的应用程序还在运行, 那行就自动调用系统安装程序.
如果我的应用不在了就需要用户手动点击安装.

这样就遇到问题了. 如果是我调用系统的安装过程, 安装完了, 那个通知栏中的完成消息并不会自动清除掉.

如何才能清除呢?
NotificationManager.cancel需要消息id作为参数, 这里似乎得不到.
如果使用DownloadManager.remove又会导致安装失败
如果使用NotificationManager.cancelAll, 能太暴力了.

我唯一想过的解决办法是能遍历当前通知栏的全部消息, 然后得到我的消息的id, 然后调用cancel.
但是我在文档中却没有找到遍历的方法......
...全文
409 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2016-05-26
  • 打赏
  • 举报
回复
操作下载项是可以操作, 比如remove函数, 但他会把下载的文件和消息一起移除了, 就是没有单独操作消息的.
引用 2 楼 qq_16909343 的回复:
启动下载时会得到一个id,可以用它来操作吧。

Uri uri = Uri.parse("APK下载地址");
DownloadManager.Request req = new DownloadManager.Request(uri);
 req.setNotificationVisibility(DownloadManager.Request
                            .VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
// ... 其它一些设置,下载目的地,标题,描述等;
启动下载:

final long downloadId = dm.enqueue(req);
然后就可以用这个downloadId操作下载项了。
qq_16909343 2016-05-25
  • 打赏
  • 举报
回复
启动下载时会得到一个id,可以用它来操作吧。

Uri uri = Uri.parse("APK下载地址");
DownloadManager.Request req = new DownloadManager.Request(uri);
 req.setNotificationVisibility(DownloadManager.Request
                            .VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
// ... 其它一些设置,下载目的地,标题,描述等;
启动下载:

final long downloadId = dm.enqueue(req);
然后就可以用这个downloadId操作下载项了。
xiaohuh421 2016-05-25
  • 打赏
  • 举报
回复
顶一个. 哪位大神来回复一个吧. orz orz

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧