diff options
author | Adam Powell <adamp@google.com> | 2015-04-22 23:36:01 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-04-22 23:36:02 +0000 |
commit | a1f6211e795be5101ab763dd451b307ae56c8cad (patch) | |
tree | dab337417437a4e5578cf136e1b03785238aa6aa | |
parent | 98c7c1355be85cf35be395704312e6f2bb3ff2d9 (diff) | |
parent | d4d34150b36e4f0722476f5eedaf279d466f5335 (diff) | |
download | frameworks_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.xml | 4 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java | 28 |
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); + } + } } |