diff options
author | Joe Onorato <joeo@android.com> | 2010-05-23 15:18:41 -0400 |
---|---|---|
committer | Joe Onorato <joeo@android.com> | 2010-06-02 14:48:43 -0700 |
commit | aaba60b281713d45a0f232580302c7b54a7207df (patch) | |
tree | 9e61b9f0133548c1fdc7aacde289c8539fe37698 | |
parent | e345fff2f80947b0a821f6674c197a02b7bff08e (diff) | |
download | frameworks_base-aaba60b281713d45a0f232580302c7b54a7207df.zip frameworks_base-aaba60b281713d45a0f232580302c7b54a7207df.tar.gz frameworks_base-aaba60b281713d45a0f232580302c7b54a7207df.tar.bz2 |
Notifications don't crash when you click them, and pass through events to NotificationManagerService
Change-Id: Iae4a636d3c6d5c617440b11eb5b8bc77838ad584
3 files changed, 23 insertions, 6 deletions
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl index 0a5b90e..f713bf9 100644 --- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl @@ -33,4 +33,6 @@ interface IStatusBarService // ---- Methods below are for use by the status bar policy services ---- void registerStatusBar(IStatusBar callbacks, out StatusBarIconList state); void visibilityChanged(boolean visible); + void onNotificationClick(String pkg, String tag, int id); + void onClearAllNotifications(); } diff --git a/packages/StatusBarPhone/src/com/android/policy/statusbar/phone/PhoneStatusBarService.java b/packages/StatusBarPhone/src/com/android/policy/statusbar/phone/PhoneStatusBarService.java index 37b3655..97b38b6 100644 --- a/packages/StatusBarPhone/src/com/android/policy/statusbar/phone/PhoneStatusBarService.java +++ b/packages/StatusBarPhone/src/com/android/policy/statusbar/phone/PhoneStatusBarService.java @@ -103,7 +103,7 @@ public class PhoneStatusBarService extends StatusBarService { switch (event.getKeyCode()) { case KeyEvent.KEYCODE_BACK: if (!down) { - //TODO PhoneStatusBarService.this.collapse(); + animateCollapse(); } return true; } @@ -119,7 +119,6 @@ public class PhoneStatusBarService extends StatusBarService { int mPixelFormat; H mHandler = new H(); Object mQueueLock = new Object(); - NotificationCallbacks mNotificationCallbacks; // icons String[] mRightIconSlots; @@ -925,12 +924,16 @@ public class PhoneStatusBarService extends StatusBarService { new Rect(pos[0], pos[1], pos[0]+v.getWidth(), pos[1]+v.getHeight())); try { mIntent.send(PhoneStatusBarService.this, 0, overlay); - mNotificationCallbacks.onNotificationClick(mPkg, mTag, mId); } catch (PendingIntent.CanceledException e) { // the stack trace isn't very helpful here. Just log the exception message. Slog.w(TAG, "Sending contentIntent failed: " + e); } - //collapse(); + try { + mBarService.onNotificationClick(mPkg, mTag, mId); + } catch (RemoteException ex) { + // system process is dead if we're here. + } + animateCollapse(); } } @@ -1314,7 +1317,11 @@ public class PhoneStatusBarService extends StatusBarService { private View.OnClickListener mClearButtonListener = new View.OnClickListener() { public void onClick(View v) { - mNotificationCallbacks.onClearAll(); + try { + mBarService.onClearAllNotifications(); + } catch (RemoteException ex) { + // system process is dead if we're here. + } animateCollapse(); } }; diff --git a/services/java/com/android/server/status/StatusBarManagerService.java b/services/java/com/android/server/status/StatusBarManagerService.java index 22b3810..26a41f3 100644 --- a/services/java/com/android/server/status/StatusBarManagerService.java +++ b/services/java/com/android/server/status/StatusBarManagerService.java @@ -255,7 +255,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub mBar = bar; iconList.copyFrom(mIcons); } - + /** * The status bar service should call this when the user changes whether * the status bar is visible or not. @@ -264,6 +264,14 @@ public class StatusBarManagerService extends IStatusBarService.Stub Slog.d(TAG, "visibilityChanged visible=" + visible); } + public void onNotificationClick(String pkg, String tag, int id) { + mNotificationCallbacks.onNotificationClick(pkg, tag, id); + } + + public void onClearAllNotifications() { + mNotificationCallbacks.onClearAll(); + } + // ================================================================================ // Callbacks for NotificationManagerService. // ================================================================================ |