summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2015-04-22 23:36:01 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-04-22 23:36:02 +0000
commita1f6211e795be5101ab763dd451b307ae56c8cad (patch)
treedab337417437a4e5578cf136e1b03785238aa6aa
parent98c7c1355be85cf35be395704312e6f2bb3ff2d9 (diff)
parentd4d34150b36e4f0722476f5eedaf279d466f5335 (diff)
downloadframeworks_base-a1f6211e795be5101ab763dd451b307ae56c8cad.zip
frameworks_base-a1f6211e795be5101ab763dd451b307ae56c8cad.tar.gz
frameworks_base-a1f6211e795be5101ab763dd451b307ae56c8cad.tar.bz2
Merge "Cancel a screenshot notification after a share target is chosen."
-rw-r--r--packages/SystemUI/AndroidManifest.xml4
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java28
2 files changed, 31 insertions, 1 deletions
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index a8a4baa..24f6931 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -208,6 +208,10 @@
</intent-filter>
</receiver>
+ <!-- Callback for dismissing screenshot notification after a share target is picked -->
+ <receiver android:name=".screenshot.GlobalScreenshot$TargetChosenReceiver"
+ android:exported="false" />
+
<!-- started from UsbDeviceSettingsManager -->
<activity android:name=".usb.UsbConfirmActivity"
android:exported="true"
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index 105bf0f..715f4e4 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -25,6 +25,7 @@ import android.app.Notification;
import android.app.Notification.BigPictureStyle;
import android.app.NotificationManager;
import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
@@ -242,7 +243,12 @@ class SaveImageInBackgroundTask extends AsyncTask<SaveImageInBackgroundData, Voi
sharingIntent.putExtra(Intent.EXTRA_STREAM, uri);
sharingIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
- Intent chooserIntent = Intent.createChooser(sharingIntent, null);
+ final PendingIntent callback = PendingIntent.getBroadcast(context, 0,
+ new Intent(context, GlobalScreenshot.TargetChosenReceiver.class)
+ .putExtra(GlobalScreenshot.CANCEL_ID, mNotificationId),
+ PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_ONE_SHOT);
+ Intent chooserIntent = Intent.createChooser(sharingIntent, null,
+ callback.getIntentSender());
chooserIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK
| Intent.FLAG_ACTIVITY_NEW_TASK);
@@ -341,6 +347,8 @@ class SaveImageInBackgroundTask extends AsyncTask<SaveImageInBackgroundData, Voi
class GlobalScreenshot {
private static final String TAG = "GlobalScreenshot";
+ static final String CANCEL_ID = "android:cancel_id";
+
private static final int SCREENSHOT_FLASH_TO_PEAK_DURATION = 130;
private static final int SCREENSHOT_DROP_IN_DURATION = 430;
private static final int SCREENSHOT_DROP_OUT_DELAY = 500;
@@ -732,4 +740,22 @@ class GlobalScreenshot {
.build();
nManager.notify(R.id.notification_screenshot, n);
}
+
+ /**
+ * Removes the notification for a screenshot after a share target is chosen.
+ */
+ public static class TargetChosenReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (!intent.hasExtra(CANCEL_ID)) {
+ return;
+ }
+
+ final NotificationManager nm =
+ (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+
+ final int id = intent.getIntExtra(CANCEL_ID, 0);
+ nm.cancel(id);
+ }
+ }
}