From a4736df685523614cf51d2fb6749fc55a2458c85 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Mon, 3 Apr 2017 10:18:42 -0700 Subject: [PATCH] Temporarily use reflection to get notification badge icon type Bug: 36855196 Change-Id: I408a98140c68f38327a6cd8ce4cc46c5f2fe34e6 --- .../notification/NotificationInfo.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/com/android/launcher3/notification/NotificationInfo.java b/src/com/android/launcher3/notification/NotificationInfo.java index f6779b3319..0b41743b99 100644 --- a/src/com/android/launcher3/notification/NotificationInfo.java +++ b/src/com/android/launcher3/notification/NotificationInfo.java @@ -25,6 +25,7 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.os.Bundle; import android.service.notification.StatusBarNotification; +import android.util.Log; import android.view.View; import com.android.launcher3.Launcher; @@ -64,7 +65,21 @@ public class NotificationInfo implements View.OnClickListener { Notification notification = statusBarNotification.getNotification(); title = notification.extras.getCharSequence(Notification.EXTRA_TITLE); text = notification.extras.getCharSequence(Notification.EXTRA_TEXT); - mBadgeIcon = notification.getBadgeIcon(); + + // TODO(b/36855196): use getBadgeIconType() without reflection + int badgeIcon = Notification.BADGE_ICON_NONE; + try { + badgeIcon = (int) Notification.class.getMethod("getBadgeIconType").invoke(notification); + } catch (Exception e) { + Log.w("NotificationInfo", "getBadgeIconType() failed", e); + // Try the old name, getBadgeIcon(), instead. + try { + badgeIcon = (int) Notification.class.getMethod("getBadgeIcon").invoke(notification); + } catch (Exception e1) { + Log.e("NotificationInfo", "getBadgeIcon() failed", e); + } + } + mBadgeIcon = badgeIcon; // Load the icon. Since it is backed by ashmem, we won't copy the entire bitmap // into our process as long as we don't touch it and it exists in systemui. Icon icon = mBadgeIcon == Notification.BADGE_ICON_SMALL ? null : notification.getLargeIcon();