From d0ca382d8037dc4974fe926ac494cec21773a385 Mon Sep 17 00:00:00 2001 From: Paresh Chouhan Date: Wed, 27 Apr 2016 02:31:06 +0530 Subject: [PATCH] Added cancel action to notifications. --- .../org/fdroid/fdroid/net/DownloaderService.java | 16 +++++++++++++++- .../main/res/drawable/ic_cancel_black_24dp.xml | 9 +++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/drawable/ic_cancel_black_24dp.xml diff --git a/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java b/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java index 05e5cce37..f29b880e8 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java +++ b/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java @@ -168,6 +168,8 @@ public class DownloaderService extends Service { .setAutoCancel(true) .setContentIntent(createAppDetailsIntent(this, 0, packageName)) .setContentTitle(getNotificationTitle(packageName)) + .addAction(R.drawable.ic_cancel_black_24dp, getString(R.string.cancel), + createCancelDownloadIntent(this, 0, urlString)) .setSmallIcon(android.R.drawable.stat_sys_download) .setContentText(urlString) .setProgress(100, 0, true); @@ -182,7 +184,7 @@ public class DownloaderService extends Service { String title; if (packageName != null) { App app = AppProvider.Helper.findByPackageName( - getContentResolver(), packageName, new String[] {AppProvider.DataColumns.NAME}); + getContentResolver(), packageName, new String[]{AppProvider.DataColumns.NAME}); title = getString(R.string.downloading_apk, app.name); } else { title = getString(R.string.downloading); @@ -211,6 +213,17 @@ public class DownloaderService extends Service { return stackBuilder.getPendingIntent(requestCode, PendingIntent.FLAG_UPDATE_CURRENT); } + public static PendingIntent createCancelDownloadIntent(@NonNull Context context, int + requestCode, @NonNull String urlString) { + Intent cancelIntent = new Intent(context.getApplicationContext(), DownloaderService.class) + .setData(Uri.parse(urlString)) + .setAction(ACTION_CANCEL); + return PendingIntent.getService(context.getApplicationContext(), + requestCode, + cancelIntent, + PendingIntent.FLAG_CANCEL_CURRENT); + } + @Override public int onStartCommand(Intent intent, int flags, int startId) { onStart(intent, startId); @@ -361,6 +374,7 @@ public class DownloaderService extends Service { * Check if a URL is waiting in the queue for downloading or if actively being downloaded. * This is useful for checking whether to re-register {@link android.content.BroadcastReceiver}s * in {@link android.app.Activity#onResume()}. + * * @see DownloaderService#isQueued(String) * @see DownloaderService#isActive(String) */ diff --git a/app/src/main/res/drawable/ic_cancel_black_24dp.xml b/app/src/main/res/drawable/ic_cancel_black_24dp.xml new file mode 100644 index 000000000..7d2b57eb2 --- /dev/null +++ b/app/src/main/res/drawable/ic_cancel_black_24dp.xml @@ -0,0 +1,9 @@ + + +