From f423f0a6d440836e968f112e295d85eae8f146ca Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Fri, 14 Jul 2017 12:36:30 -0700 Subject: [PATCH] Catch SecurityException from NoMan to workaround possible race condition b/63636581 Change-Id: Ia06a5be59b2114bda9b4a55ad945fdd832013110 --- .../notification/NotificationListener.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/notification/NotificationListener.java b/src/com/android/launcher3/notification/NotificationListener.java index 8121fd55fb..73d89aa189 100644 --- a/src/com/android/launcher3/notification/NotificationListener.java +++ b/src/com/android/launcher3/notification/NotificationListener.java @@ -28,6 +28,7 @@ import android.service.notification.StatusBarNotification; import android.support.annotation.Nullable; import android.text.TextUtils; import android.util.ArraySet; +import android.util.Log; import android.util.Pair; import com.android.launcher3.LauncherModel; import com.android.launcher3.config.FeatureFlags; @@ -47,6 +48,8 @@ import java.util.Set; @TargetApi(Build.VERSION_CODES.O) public class NotificationListener extends NotificationListenerService { + public static final String TAG = "NotificationListener"; + private static final int MSG_NOTIFICATION_POSTED = 1; private static final int MSG_NOTIFICATION_REMOVED = 2; private static final int MSG_NOTIFICATION_FULL_REFRESH = 3; @@ -71,9 +74,19 @@ public class NotificationListener extends NotificationListenerService { mUiHandler.obtainMessage(message.what, message.obj).sendToTarget(); break; case MSG_NOTIFICATION_FULL_REFRESH: - final List activeNotifications = sIsConnected - ? filterNotifications(getActiveNotifications()) - : new ArrayList(); + List activeNotifications; + if (sIsConnected) { + try { + activeNotifications = filterNotifications(getActiveNotifications()); + } catch (SecurityException ex) { + Log.e(TAG, "SecurityException: failed to fetch notifications"); + activeNotifications = new ArrayList(); + + } + } else { + activeNotifications = new ArrayList(); + } + mUiHandler.obtainMessage(message.what, activeNotifications).sendToTarget(); break; }