Fixed a bug with a legacy notification API

When using setLatestEventInfo the icons would not be shown
at all anymore, leading to a crash if they were grouped.
This CL makes sure the smallIcon is always set even for those
legacy apps.
It also fixes the usage of setShow when, as legacy apps wouldn't
have the time anymore.

Change-Id: I2645175b2adabcedbbfec7a502b89d143d2b9bd3
Fixes: 29255365
Fixes: 27430676
This commit is contained in:
Selim Cinek
2016-06-13 15:47:03 -07:00
parent bbcb733d80
commit 4ac6f6010b

View File

@@ -1986,6 +1986,10 @@ public class Notification implements Parcelable
new Throwable());
}
if (context.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.N) {
extras.putBoolean(EXTRA_SHOW_WHEN, true);
}
// ensure that any information already set directly is preserved
final Notification.Builder builder = new Notification.Builder(context, this);
@@ -2269,6 +2273,14 @@ public class Notification implements Parcelable
Collections.addAll(mPersonList, mN.extras.getStringArray(EXTRA_PEOPLE));
}
if (mN.getSmallIcon() == null && mN.icon != 0) {
setSmallIcon(mN.icon);
}
if (mN.getLargeIcon() == null && mN.largeIcon != null) {
setLargeIcon(mN.largeIcon);
}
String templateClass = mN.extras.getString(EXTRA_TEMPLATE);
if (!TextUtils.isEmpty(templateClass)) {
final Class<? extends Style> styleClass