builder.build(); // callers expect this notification to be ready to use
}
+ /**
+ * @hide
+ */
+ public static void addFieldsFromContext(Context context, Notification notification) {
+ if (notification.extras.getParcelable(EXTRA_BUILDER_APPLICATION_INFO) == null) {
+ notification.extras.putParcelable(EXTRA_BUILDER_APPLICATION_INFO,
+ context.getApplicationInfo());
+ }
+ if (!notification.extras.containsKey(EXTRA_ORIGINATING_USERID)) {
+ notification.extras.putInt(EXTRA_ORIGINATING_USERID, context.getUserId());
+ }
+ }
+
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
private boolean mColorUtilInited = false;
/**
- * The user that built the notification originally.
- */
- private int mOriginatingUserId;
-
- /**
* Constructs a new Builder with the defaults:
*
// Note: This assumes that the current user can read the profile badge of the
// originating user.
return mContext.getPackageManager().getUserBadgeForDensity(
- new UserHandle(mOriginatingUserId), 0);
+ new UserHandle(mContext.getUserId()), 0);
}
private Bitmap getProfileBadge() {
mN.extras.putStringArray(EXTRA_PEOPLE,
mPersonList.toArray(new String[mPersonList.size()]));
}
- if (mN.topic == null) {
- mN.topic = new Topic(TOPIC_DEFAULT, mContext.getString(
- R.string.default_notification_topic_label));
- }
return mN;
}
ApplicationInfo applicationInfo = n.extras.getParcelable(
EXTRA_BUILDER_APPLICATION_INFO);
Context builderContext;
- try {
- builderContext = context.createApplicationContext(applicationInfo,
- Context.CONTEXT_RESTRICTED);
- } catch (NameNotFoundException e) {
- Log.e(TAG, "ApplicationInfo " + applicationInfo + " not found");
- builderContext = context; // try with our context
+ if (applicationInfo != null) {
+ try {
+ builderContext = context.createApplicationContext(applicationInfo,
+ Context.CONTEXT_RESTRICTED);
+ } catch (NameNotFoundException e) {
+ Log.e(TAG, "ApplicationInfo " + applicationInfo + " not found");
+ builderContext = context; // try with our context
+ }
+ } else {
+ builderContext = context; // try with given context
}
return new Builder(builderContext, n);
}
// lazy stuff from mContext; see comment in Builder(Context, Notification)
- mN.extras.putParcelable(EXTRA_BUILDER_APPLICATION_INFO, mContext.getApplicationInfo());
- mOriginatingUserId = mContext.getUserId();
- mN.extras.putInt(EXTRA_ORIGINATING_USERID, mOriginatingUserId);
+ Notification.addFieldsFromContext(mContext, mN);
buildUnstyled();
r = new Record();
r.pkg = pkg;
r.uid = uid;
- r.topics.put(Notification.TOPIC_DEFAULT,
- new Topic(new Notification.Topic(Notification.TOPIC_DEFAULT,
- mContext.getString(R.string.default_notification_topic_label))));
+ r.topics.put(Notification.TOPIC_DEFAULT, new Topic(createDefaultTopic()));
mRecords.put(key, r);
}
return r;
}
private Topic getOrCreateTopic(Record r, Notification.Topic topic) {
+ if (topic == null) {
+ topic = createDefaultTopic();
+ }
Topic t = r.topics.get(topic.getId());
if (t != null) {
return t;
}
}
+ private Notification.Topic createDefaultTopic() {
+ return new Notification.Topic(Notification.TOPIC_DEFAULT,
+ mContext.getString(R.string.default_notification_topic_label));
+ }
+
public void dump(PrintWriter pw, String prefix, NotificationManagerService.DumpFilter filter) {
if (filter == null) {
final int N = mSignalExtractors.length;