diff options
author | Danny Baumann <dannybaumann@web.de> | 2013-04-03 14:36:21 +0200 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2013-04-05 13:17:14 -0700 |
commit | af49093b1554fdc55977e9281505e05865f33813 (patch) | |
tree | 0e0a42302577cab01855edb7c14530c7ec5ffa78 | |
parent | 5048492e352be8134d92178d757a60117491e292 (diff) | |
download | android_packages_providers_DownloadProvider-af49093b1554fdc55977e9281505e05865f33813.tar.gz android_packages_providers_DownloadProvider-af49093b1554fdc55977e9281505e05865f33813.tar.bz2 android_packages_providers_DownloadProvider-af49093b1554fdc55977e9281505e05865f33813.zip |
Fix download notification click behaviour.
PendingIntent.getBroadcast() doesn't update the intent extras if not
explicitly given something to distinguish the intents. This caused the
notification on-click to do nothing on everything but the first
download.
Change-Id: I29544ae5b04f8304cbbe720066a26ff90e422107
-rw-r--r-- | src/com/android/providers/downloads/DownloadNotifier.java | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/com/android/providers/downloads/DownloadNotifier.java b/src/com/android/providers/downloads/DownloadNotifier.java index df0bf840..04054783 100644 --- a/src/com/android/providers/downloads/DownloadNotifier.java +++ b/src/com/android/providers/downloads/DownloadNotifier.java @@ -161,12 +161,14 @@ public class DownloadNotifier { // Build action intents if (type == TYPE_ACTIVE || type == TYPE_WAITING) { + // build a synthetic uri for intent identification purposes + final Uri uri = new Uri.Builder().scheme("active-dl").appendPath(tag).build(); final Intent intent = new Intent(Constants.ACTION_LIST, - null, mContext, DownloadReceiver.class); + uri, mContext, DownloadReceiver.class); intent.putExtra(DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS, getDownloadIds(cluster)); - builder.setContentIntent(PendingIntent.getBroadcast( - mContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT)); + builder.setContentIntent(PendingIntent.getBroadcast(mContext, + 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)); builder.setOngoing(true); } else if (type == TYPE_COMPLETE) { @@ -188,8 +190,8 @@ public class DownloadNotifier { final Intent intent = new Intent(action, uri, mContext, DownloadReceiver.class); intent.putExtra(DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS, getDownloadIds(cluster)); - builder.setContentIntent(PendingIntent.getBroadcast( - mContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT)); + builder.setContentIntent(PendingIntent.getBroadcast(mContext, + 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)); final Intent hideIntent = new Intent(Constants.ACTION_HIDE, uri, mContext, DownloadReceiver.class); |