From 44410552339377f55a98b32dbadb4f7cf3aa8d83 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Tue, 2 May 2017 11:16:26 -0700 Subject: [PATCH] Relax notification filter for badges - Allow notifications with only title or text, not both (centered in popup) - Allow notifications without an intent (don't add onClickListener) Change-Id: I33d9bdbe0d27347d703b6fb81eda64ebdc7429d5 --- .../notification/NotificationListener.java | 4 ++-- .../notification/NotificationMainView.java | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/com/android/launcher3/notification/NotificationListener.java b/src/com/android/launcher3/notification/NotificationListener.java index cb37f08525..8dca699efc 100644 --- a/src/com/android/launcher3/notification/NotificationListener.java +++ b/src/com/android/launcher3/notification/NotificationListener.java @@ -232,8 +232,8 @@ public class NotificationListener extends NotificationListenerService { boolean isGroupHeader = (notification.flags & Notification.FLAG_GROUP_SUMMARY) != 0; CharSequence title = notification.extras.getCharSequence(Notification.EXTRA_TITLE); CharSequence text = notification.extras.getCharSequence(Notification.EXTRA_TEXT); - boolean missingTitleOrText = TextUtils.isEmpty(title) || TextUtils.isEmpty(text); - return (notification.contentIntent == null || isGroupHeader || missingTitleOrText); + boolean missingTitleAndText = TextUtils.isEmpty(title) && TextUtils.isEmpty(text); + return (isGroupHeader || missingTitleAndText); } public interface NotificationsChangedListener { diff --git a/src/com/android/launcher3/notification/NotificationMainView.java b/src/com/android/launcher3/notification/NotificationMainView.java index bb2dac0e13..d6e0272fe2 100644 --- a/src/com/android/launcher3/notification/NotificationMainView.java +++ b/src/com/android/launcher3/notification/NotificationMainView.java @@ -21,6 +21,7 @@ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.RippleDrawable; +import android.text.TextUtils; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; @@ -83,11 +84,21 @@ public class NotificationMainView extends FrameLayout implements SwipeHelper.Cal public void applyNotificationInfo(NotificationInfo mainNotification, View iconView, boolean animate) { mNotificationInfo = mainNotification; - mTitleView.setText(mNotificationInfo.title); - mTextView.setText(mNotificationInfo.text); + CharSequence title = mNotificationInfo.title; + CharSequence text = mNotificationInfo.text; + if (!TextUtils.isEmpty(title) && !TextUtils.isEmpty(text)) { + mTitleView.setText(title); + mTextView.setText(text); + } else { + mTitleView.setMaxLines(2); + mTitleView.setText(TextUtils.isEmpty(title) ? text : title); + mTextView.setVisibility(GONE); + } iconView.setBackground(mNotificationInfo.getIconForBackground(getContext(), mBackgroundColor)); - setOnClickListener(mNotificationInfo); + if (mNotificationInfo.intent != null) { + setOnClickListener(mNotificationInfo); + } setTranslationX(0); // Add a dummy ItemInfo so that logging populates the correct container and item types // instead of DEFAULT_CONTAINERTYPE and DEFAULT_ITEMTYPE, respectively.