Add cancel action to download notification (#6353)
This commit is contained in:
parent
34553475d9
commit
3e077e5653
|
@ -39,9 +39,8 @@ public class DownloadServiceNotification {
|
||||||
.setOnlyAlertOnce(true)
|
.setOnlyAlertOnce(true)
|
||||||
.setShowWhen(false)
|
.setShowWhen(false)
|
||||||
.setContentIntent(getNotificationContentIntent(context))
|
.setContentIntent(getNotificationContentIntent(context))
|
||||||
.setSmallIcon(R.drawable.ic_notification_sync);
|
.setSmallIcon(R.drawable.ic_notification_sync)
|
||||||
notificationCompatBuilder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
|
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
|
||||||
|
|
||||||
Log.d(TAG, "Notification set up");
|
Log.d(TAG, "Notification set up");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,12 +61,27 @@ public class DownloadServiceNotification {
|
||||||
} else {
|
} else {
|
||||||
contentTitle = context.getString(R.string.download_notification_title);
|
contentTitle = context.getString(R.string.download_notification_title);
|
||||||
}
|
}
|
||||||
String contentText = (downloads.size() > 0)
|
|
||||||
? context.getResources().getQuantityString(R.plurals.downloads_left, downloads.size(), downloads.size())
|
int numDownloads = getNumberOfRunningDownloads(downloads);
|
||||||
: context.getString(R.string.completing);
|
String contentText = context.getString(R.string.completing);
|
||||||
String bigText = compileNotificationString(downloads);
|
String bigText = context.getString(R.string.completing);
|
||||||
if (!bigText.contains("\n")) {
|
notificationCompatBuilder.clearActions();
|
||||||
contentText = bigText;
|
if (numDownloads > 0) {
|
||||||
|
bigText = compileNotificationString(downloads);
|
||||||
|
if (numDownloads == 1) {
|
||||||
|
contentText = bigText;
|
||||||
|
} else {
|
||||||
|
contentText = context.getResources().getQuantityString(R.plurals.downloads_left,
|
||||||
|
numDownloads, numDownloads);
|
||||||
|
}
|
||||||
|
|
||||||
|
Intent cancelDownloadsIntent = new Intent(DownloadService.ACTION_CANCEL_ALL_DOWNLOADS);
|
||||||
|
cancelDownloadsIntent.setPackage(context.getPackageName());
|
||||||
|
PendingIntent cancelPendingIntent = PendingIntent.getBroadcast(context,
|
||||||
|
R.id.pending_intent_download_cancel_all, cancelDownloadsIntent, PendingIntent.FLAG_UPDATE_CURRENT
|
||||||
|
| (Build.VERSION.SDK_INT >= 23 ? PendingIntent.FLAG_IMMUTABLE : 0));
|
||||||
|
notificationCompatBuilder.addAction(new NotificationCompat.Action(
|
||||||
|
R.drawable.ic_notification_cancel, context.getString(R.string.cancel_label), cancelPendingIntent));
|
||||||
}
|
}
|
||||||
|
|
||||||
notificationCompatBuilder.setContentTitle(contentTitle);
|
notificationCompatBuilder.setContentTitle(contentTitle);
|
||||||
|
@ -76,6 +90,16 @@ public class DownloadServiceNotification {
|
||||||
return notificationCompatBuilder.build();
|
return notificationCompatBuilder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getNumberOfRunningDownloads(List<Downloader> downloads) {
|
||||||
|
int running = 0;
|
||||||
|
for (Downloader downloader : downloads) {
|
||||||
|
if (!downloader.cancelled && !downloader.isFinished()) {
|
||||||
|
running++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return running;
|
||||||
|
}
|
||||||
|
|
||||||
private boolean typeIsOnly(List<Downloader> downloads, int feedFileType) {
|
private boolean typeIsOnly(List<Downloader> downloads, int feedFileType) {
|
||||||
for (Downloader downloader : downloads) {
|
for (Downloader downloader : downloads) {
|
||||||
if (downloader.cancelled) {
|
if (downloader.cancelled) {
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
<resources>
|
<resources>
|
||||||
<item name="pending_intent_download_service_notification" type="id"/>
|
<item name="pending_intent_download_service_notification" type="id"/>
|
||||||
<item name="pending_intent_download_service_retry" type="id"/>
|
<item name="pending_intent_download_service_retry" type="id"/>
|
||||||
|
<item name="pending_intent_download_cancel_all" type="id"/>
|
||||||
<item name="pending_intent_download_service_auth" type="id"/>
|
<item name="pending_intent_download_service_auth" type="id"/>
|
||||||
<item name="pending_intent_download_service_report" type="id"/>
|
<item name="pending_intent_download_service_report" type="id"/>
|
||||||
<item name="pending_intent_download_service_autodownload_report" type="id"/>
|
<item name="pending_intent_download_service_autodownload_report" type="id"/>
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
<vector android:height="24dp"
|
||||||
|
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||||
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="#FFFFFFFF" android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2zM17,15.59L15.59,17 12,13.41 8.41,17 7,15.59 10.59,12 7,8.41 8.41,7 12,10.59 15.59,7 17,8.41 13.41,12 17,15.59z"/>
|
||||||
|
</vector>
|
Loading…
Reference in New Issue