am df9e20f2: Merge changes Iffd15e95,Id2db95ec
* commit 'df9e20f28839a61dd487c2a67f914e87da1dede9': Log notification clicks Add userId to StatusBarNotification key
This commit is contained in:
@@ -87,7 +87,7 @@ public class StatusBarNotification implements Parcelable {
|
||||
}
|
||||
|
||||
private String key() {
|
||||
return pkg + '|' + id + '|' + tag + '|' + uid;
|
||||
return user.getIdentifier() + "|" + pkg + "|" + id + "|" + tag + "|" + uid;
|
||||
}
|
||||
|
||||
public void writeToParcel(Parcel out, int flags) {
|
||||
|
||||
@@ -42,7 +42,7 @@ interface IStatusBarService
|
||||
out int[] switches, out List<IBinder> binders);
|
||||
void onPanelRevealed();
|
||||
void onPanelHidden();
|
||||
void onNotificationClick(String pkg, String tag, int id, int userId);
|
||||
void onNotificationClick(String key);
|
||||
void onNotificationError(String pkg, String tag, int id,
|
||||
int uid, int initialPid, String message, int userId);
|
||||
void onClearAllNotifications(int userId);
|
||||
|
||||
@@ -773,8 +773,8 @@ public abstract class BaseStatusBar extends SystemUI implements
|
||||
|
||||
PendingIntent contentIntent = sbn.getNotification().contentIntent;
|
||||
if (contentIntent != null) {
|
||||
final View.OnClickListener listener = makeClicker(contentIntent,
|
||||
sbn.getPackageName(), sbn.getTag(), sbn.getId(), isHeadsUp, sbn.getUserId());
|
||||
final View.OnClickListener listener = makeClicker(contentIntent, sbn.getKey(),
|
||||
isHeadsUp);
|
||||
row.setOnClickListener(listener);
|
||||
} else {
|
||||
row.setOnClickListener(null);
|
||||
@@ -884,27 +884,20 @@ public abstract class BaseStatusBar extends SystemUI implements
|
||||
return true;
|
||||
}
|
||||
|
||||
public NotificationClicker makeClicker(PendingIntent intent, String pkg, String tag,
|
||||
int id, boolean forHun, int userId) {
|
||||
return new NotificationClicker(intent, pkg, tag, id, forHun, userId);
|
||||
public NotificationClicker makeClicker(PendingIntent intent, String notificationKey,
|
||||
boolean forHun) {
|
||||
return new NotificationClicker(intent, notificationKey, forHun);
|
||||
}
|
||||
|
||||
protected class NotificationClicker implements View.OnClickListener {
|
||||
private PendingIntent mIntent;
|
||||
private String mPkg;
|
||||
private String mTag;
|
||||
private int mId;
|
||||
private final String mNotificationKey;
|
||||
private boolean mIsHeadsUp;
|
||||
private int mUserId;
|
||||
|
||||
public NotificationClicker(PendingIntent intent, String pkg, String tag, int id,
|
||||
boolean forHun, int userId) {
|
||||
public NotificationClicker(PendingIntent intent, String notificationKey, boolean forHun) {
|
||||
mIntent = intent;
|
||||
mPkg = pkg;
|
||||
mTag = tag;
|
||||
mId = id;
|
||||
mNotificationKey = notificationKey;
|
||||
mIsHeadsUp = forHun;
|
||||
mUserId = userId;
|
||||
}
|
||||
|
||||
public void onClick(View v) {
|
||||
@@ -940,7 +933,7 @@ public abstract class BaseStatusBar extends SystemUI implements
|
||||
if (mIsHeadsUp) {
|
||||
mHandler.sendEmptyMessage(MSG_HIDE_HEADS_UP);
|
||||
}
|
||||
mBarService.onNotificationClick(mPkg, mTag, mId, mUserId);
|
||||
mBarService.onNotificationClick(mNotificationKey);
|
||||
} catch (RemoteException ex) {
|
||||
// system process is dead if we're here.
|
||||
}
|
||||
@@ -1344,9 +1337,8 @@ public abstract class BaseStatusBar extends SystemUI implements
|
||||
// update the contentIntent
|
||||
final PendingIntent contentIntent = notification.getNotification().contentIntent;
|
||||
if (contentIntent != null) {
|
||||
final View.OnClickListener listener = makeClicker(contentIntent,
|
||||
notification.getPackageName(), notification.getTag(), notification.getId(),
|
||||
isHeadsUp, notification.getUserId());
|
||||
final View.OnClickListener listener = makeClicker(contentIntent, notification.getKey(),
|
||||
isHeadsUp);
|
||||
entry.row.setOnClickListener(listener);
|
||||
} else {
|
||||
entry.row.setOnClickListener(null);
|
||||
|
||||
@@ -65,6 +65,8 @@ option java_package com.android.server
|
||||
27501 notification_panel_hidden
|
||||
# when notifications are newly displayed on screen, or disappear from screen
|
||||
27510 notification_visibility_changed (newlyVisibleKeys|3),(noLongerVisibleKeys|3)
|
||||
# when a notification has been clicked
|
||||
27520 notification_clicked (key|3)
|
||||
|
||||
# ---------------------------
|
||||
# Watchdog.java
|
||||
|
||||
@@ -21,8 +21,7 @@ import android.os.IBinder;
|
||||
public interface NotificationDelegate {
|
||||
void onSetDisabled(int status);
|
||||
void onClearAll(int callingUid, int callingPid, int userId);
|
||||
void onNotificationClick(int callingUid, int callingPid,
|
||||
String pkg, String tag, int id, int userId);
|
||||
void onNotificationClick(int callingUid, int callingPid, String key);
|
||||
void onNotificationClear(int callingUid, int callingPid,
|
||||
String pkg, String tag, int id, int userId);
|
||||
void onNotificationError(int callingUid, int callingPid,
|
||||
|
||||
@@ -602,10 +602,20 @@ public class NotificationManagerService extends SystemService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNotificationClick(int callingUid, int callingPid,
|
||||
String pkg, String tag, int id, int userId) {
|
||||
cancelNotification(callingUid, callingPid, pkg, tag, id, Notification.FLAG_AUTO_CANCEL,
|
||||
Notification.FLAG_FOREGROUND_SERVICE, false, userId, REASON_DELEGATE_CLICK, null);
|
||||
public void onNotificationClick(int callingUid, int callingPid, String key) {
|
||||
synchronized (mNotificationList) {
|
||||
EventLogTags.writeNotificationClicked(key);
|
||||
NotificationRecord r = mNotificationsByKey.get(key);
|
||||
if (r == null) {
|
||||
Log.w(TAG, "No notification with key: " + key);
|
||||
return;
|
||||
}
|
||||
StatusBarNotification sbn = r.sbn;
|
||||
cancelNotification(callingUid, callingPid, sbn.getPackageName(), sbn.getTag(),
|
||||
sbn.getId(), Notification.FLAG_AUTO_CANCEL,
|
||||
Notification.FLAG_FOREGROUND_SERVICE, false, r.getUserId(),
|
||||
REASON_DELEGATE_CLICK, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -546,13 +546,13 @@ public class StatusBarManagerService extends IStatusBarService.Stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNotificationClick(String pkg, String tag, int id, int userId) {
|
||||
public void onNotificationClick(String key) {
|
||||
enforceStatusBarService();
|
||||
final int callingUid = Binder.getCallingUid();
|
||||
final int callingPid = Binder.getCallingPid();
|
||||
long identity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mNotificationDelegate.onNotificationClick(callingUid, callingPid, pkg, tag, id, userId);
|
||||
mNotificationDelegate.onNotificationClick(callingUid, callingPid, key);
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(identity);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user