Notifications don't crash when you click them, and pass through events to NotificationManagerService

Change-Id: Iae4a636d3c6d5c617440b11eb5b8bc77838ad584
This commit is contained in:
Joe Onorato
2010-05-23 15:18:41 -04:00
parent e345fff2f8
commit aaba60b281
3 changed files with 23 additions and 6 deletions

View File

@@ -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();
}

View File

@@ -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();
}
};

View File

@@ -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.
// ================================================================================