Added a targetAPi check to the user name requirement
Change-Id: I5ba972eff6e45545f6100e30ce4290665fa1ca6c
Fixes: 72814121
Test: add messaging notification with targetAPI < P without a name, observe no crash
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index c805658..bb962204 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -5221,6 +5221,7 @@
if (mStyle != null) {
mStyle.reduceImageSizes(mContext);
mStyle.purgeResources();
+ mStyle.validate(mContext);
mStyle.buildStyled(mN);
}
mN.reduceImageSizes(mContext);
@@ -5790,6 +5791,13 @@
*/
public void reduceImageSizes(Context context) {
}
+
+ /**
+ * Validate that this style was properly composed. This is called at build time.
+ * @hide
+ */
+ public void validate(Context context) {
+ }
}
/**
@@ -6180,12 +6188,23 @@
* @param user Required - The person displayed for any messages that are sent by the
* user. Any messages added with {@link #addMessage(Notification.MessagingStyle.Message)}
* who don't have a Person associated with it will be displayed as if they were sent
- * by this user. The user also needs to have a valid name associated with it.
+ * by this user. The user also needs to have a valid name associated with it, which will
+ * be enforced starting in Android P.
*/
public MessagingStyle(@NonNull Person user) {
mUser = user;
- if (user == null || user.getName() == null) {
- throw new RuntimeException("user must be valid and have a name");
+ }
+
+ /**
+ * Validate that this style was properly composed. This is called at build time.
+ * @hide
+ */
+ @Override
+ public void validate(Context context) {
+ super.validate(context);
+ if (context.getApplicationInfo().targetSdkVersion
+ >= Build.VERSION_CODES.P && (mUser == null || mUser.getName() == null)) {
+ throw new RuntimeException("User must be valid and have a name.");
}
}