summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Sandler <dsandler@android.com>2010-06-29 15:19:54 -0400
committerDaniel Sandler <dsandler@android.com>2010-06-29 15:19:54 -0400
commit27a8be4b3526f068e911c8edcd4ee6fa6f492c0f (patch)
treed778af9e664e886c0c9b3e44c9e7dccb3af24b2f
parent059f009d970fb37ac4e408dcf8e1d2d2cdcf0a84 (diff)
downloadframeworks_base-27a8be4b3526f068e911c8edcd4ee6fa6f492c0f.zip
frameworks_base-27a8be4b3526f068e911c8edcd4ee6fa6f492c0f.tar.gz
frameworks_base-27a8be4b3526f068e911c8edcd4ee6fa6f492c0f.tar.bz2
Support for tapping on an immersive-mode priority notification.
When the user taps on an intruder alert (the priority notification in immersive mode), the .contentIntent in the Notification object will be sent, just as we handle tapping on a normal Notification in the windowshade. Change-Id: Ib6991837b0b2122fe138cddacf347fdbc426b99d
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java44
-rw-r--r--tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java2
2 files changed, 27 insertions, 19 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java
index 641abb8..7eef0e9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java
@@ -273,12 +273,6 @@ public class StatusBarService extends Service implements CommandQueue.Callbacks
mIntruderAlertView = View.inflate(context, R.layout.intruder_alert, null);
mIntruderAlertView.setVisibility(View.GONE);
mIntruderAlertView.setClickable(true);
- mIntruderAlertView.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- Slog.d(TAG, "Intruder Alert clicked!");
- mHandler.sendEmptyMessage(MSG_HIDE_INTRUDER);
- }
- });
StatusBarView sb = (StatusBarView)View.inflate(context, R.layout.status_bar, null);
sb.mService = this;
@@ -423,13 +417,16 @@ public class StatusBarService extends Service implements CommandQueue.Callbacks
iconView.getStatusBarIcon()));
alertText.setText(notification.notification.tickerText);
+ mIntruderAlertView.setOnClickListener(
+ new Launcher(notification.notification.contentIntent,
+ notification.pkg, notification.tag, notification.id));
+
// 2. Animate mIntruderAlertView in
- mHandler.removeMessages(MSG_HIDE_INTRUDER);
mHandler.sendEmptyMessage(MSG_SHOW_INTRUDER);
- mHandler.sendEmptyMessageDelayed(MSG_HIDE_INTRUDER, INTRUDER_ALERT_DECAY_MS);
// 3. Set alarm to age the notification off (TODO)
-
+ mHandler.removeMessages(MSG_HIDE_INTRUDER);
+ mHandler.sendEmptyMessageDelayed(MSG_HIDE_INTRUDER, INTRUDER_ALERT_DECAY_MS);
}
} else if (notification.notification.fullScreenIntent != null) {
// not immersive & a full-screen alert should be shown
@@ -1085,23 +1082,32 @@ public class StatusBarService extends Service implements CommandQueue.Callbacks
ActivityManagerNative.getDefault().resumeAppSwitches();
} catch (RemoteException e) {
}
- int[] pos = new int[2];
- v.getLocationOnScreen(pos);
- Intent overlay = new Intent();
- overlay.setSourceBounds(
- new Rect(pos[0], pos[1], pos[0]+v.getWidth(), pos[1]+v.getHeight()));
- try {
- mIntent.send(StatusBarService.this, 0, overlay);
- } catch (PendingIntent.CanceledException e) {
- // the stack trace isn't very helpful here. Just log the exception message.
- Slog.w(TAG, "Sending contentIntent failed: " + e);
+
+ if (mIntent != null) {
+ int[] pos = new int[2];
+ v.getLocationOnScreen(pos);
+ Intent overlay = new Intent();
+ overlay.setSourceBounds(
+ new Rect(pos[0], pos[1], pos[0]+v.getWidth(), pos[1]+v.getHeight()));
+ try {
+ mIntent.send(StatusBarService.this, 0, overlay);
+ } catch (PendingIntent.CanceledException e) {
+ // the stack trace isn't very helpful here. Just log the exception message.
+ Slog.w(TAG, "Sending contentIntent failed: " + e);
+ }
}
+
try {
mBarService.onNotificationClick(mPkg, mTag, mId);
} catch (RemoteException ex) {
// system process is dead if we're here.
}
+
+ // close the shade if it was open
animateCollapse();
+
+ // If this click was on the intruder alert, hide that instead
+ mHandler.sendEmptyMessage(MSG_HIDE_INTRUDER);
}
}
diff --git a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
index 8c343b5..c6a4134 100644
--- a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
+++ b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
@@ -104,6 +104,8 @@ public class StatusBarTest extends TestActivity
0,
fullScreenIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
+ // if you tap on it you should get the original alert box
+ not.contentIntent = not.fullScreenIntent;
mNotificationManager.notify(id, not);
}
},