带有自定义通知的下载管理器
DownloadManager with custom notification
我现在碰壁了,我想用 DownloadManager
下载一个文件,它正在运行。但是,我想自定义该通知,例如,而不是在右侧显示进度百分比,我想显示:DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR / DownloadManager.COLUMN_TOTAL_SIZE_BYTES
并在下载完成时添加一个按钮(但为此我下载完成后知道有接收器)
到目前为止我的代码是这样的:
DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(mpopup.apk));
NotificationCompat.Builder nBuilder = new NotificationCompat.Builder(this, "Channel_ID")
.setOngoing(true)
.setAutoCancel(false)
.setContentTitle("DOWNLOAD FILE")
.setContentText("Downloading 0MB/100MB")
.setProgress(100,0,false);
request.setTitle("DOWNLOAD TITLE");
request.setVisibleInDownloadsUi(false);
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
downloadManager.enqueue(request);
如何更新通知中的进度条和文本?下载时
我已经尝试过:DownloadManager notification displays no percentage但是它不起作用并且只在完全下载后显示日志
不直接。您的应用未显示 Notification
;你无法控制它的行为。
最可能的解决方案是不使用 DownloadManager
,而是自己下载内容。然后,你可以显示任何你想要的 Notification.
中间立场是使用 DownloadManager
,但设置标志和权限以允许您请求不显示通知的下载。然后,您可以拥有自己的 Notification.
这里的缺点是您可能无法重现系统提供的 Notification
的所有功能(例如,完成百分比进度指示器)。
// Changing the Notification Title, Description, and its Visibility
DownloadManager mgr = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse("///.mp3");
DownloadManager.Request req = DownloadManager.Request(uri);
req.setTitle("Download");
req.setDescription("Kick Ass Description");
req.setVisibility(Request.VISIBILITY_VISIBLE_COMPLETION_ONLY);
简短的回答是您无法更新通知,因为您无法控制它。
唯一的解决办法是自己管理下载和通知。
我现在碰壁了,我想用 DownloadManager
下载一个文件,它正在运行。但是,我想自定义该通知,例如,而不是在右侧显示进度百分比,我想显示:DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR / DownloadManager.COLUMN_TOTAL_SIZE_BYTES
并在下载完成时添加一个按钮(但为此我下载完成后知道有接收器)
到目前为止我的代码是这样的:
DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(mpopup.apk));
NotificationCompat.Builder nBuilder = new NotificationCompat.Builder(this, "Channel_ID")
.setOngoing(true)
.setAutoCancel(false)
.setContentTitle("DOWNLOAD FILE")
.setContentText("Downloading 0MB/100MB")
.setProgress(100,0,false);
request.setTitle("DOWNLOAD TITLE");
request.setVisibleInDownloadsUi(false);
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
downloadManager.enqueue(request);
如何更新通知中的进度条和文本?下载时
我已经尝试过:DownloadManager notification displays no percentage但是它不起作用并且只在完全下载后显示日志
不直接。您的应用未显示 Notification
;你无法控制它的行为。
最可能的解决方案是不使用 DownloadManager
,而是自己下载内容。然后,你可以显示任何你想要的 Notification.
中间立场是使用 DownloadManager
,但设置标志和权限以允许您请求不显示通知的下载。然后,您可以拥有自己的 Notification.
这里的缺点是您可能无法重现系统提供的 Notification
的所有功能(例如,完成百分比进度指示器)。
// Changing the Notification Title, Description, and its Visibility
DownloadManager mgr = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse("///.mp3");
DownloadManager.Request req = DownloadManager.Request(uri);
req.setTitle("Download");
req.setDescription("Kick Ass Description");
req.setVisibility(Request.VISIBILITY_VISIBLE_COMPLETION_ONLY);
简短的回答是您无法更新通知,因为您无法控制它。
唯一的解决办法是自己管理下载和通知。