Catch SecurityException from NoMan to workaround possible race condition
b/63636581
Change-Id: Ia06a5be59b2114bda9b4a55ad945fdd832013110
diff --git a/src/com/android/launcher3/notification/NotificationListener.java b/src/com/android/launcher3/notification/NotificationListener.java
index 8121fd5..73d89aa 100644
--- a/src/com/android/launcher3/notification/NotificationListener.java
+++ b/src/com/android/launcher3/notification/NotificationListener.java
@@ -28,6 +28,7 @@
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 @@
@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 @@
mUiHandler.obtainMessage(message.what, message.obj).sendToTarget();
break;
case MSG_NOTIFICATION_FULL_REFRESH:
- final List<StatusBarNotification> activeNotifications = sIsConnected
- ? filterNotifications(getActiveNotifications())
- : new ArrayList<StatusBarNotification>();
+ List<StatusBarNotification> activeNotifications;
+ if (sIsConnected) {
+ try {
+ activeNotifications = filterNotifications(getActiveNotifications());
+ } catch (SecurityException ex) {
+ Log.e(TAG, "SecurityException: failed to fetch notifications");
+ activeNotifications = new ArrayList<StatusBarNotification>();
+
+ }
+ } else {
+ activeNotifications = new ArrayList<StatusBarNotification>();
+ }
+
mUiHandler.obtainMessage(message.what, activeNotifications).sendToTarget();
break;
}