From 2b4843718fb5b0d7fefcc4f1804d98a16e6e674f Mon Sep 17 00:00:00 2001 From: Brad Stenning Date: Tue, 20 Nov 2018 13:04:55 -0800 Subject: [PATCH] create factory to generated an onClickListener for notifications such that CarSysUI can close the notification window when a notifcation launches an app Bug: 116595026 Test: Manual Change-Id: Ia3d59ca6b361eb5a5364dcad2e999a0fe820929e (cherry picked from commit c3e86efd3b9dc0544c7c4a404380bb9ab57fc113) --- .../systemui/notifications/NotificationsUI.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/CarSystemUI/src/com/android/systemui/notifications/NotificationsUI.java b/packages/CarSystemUI/src/com/android/systemui/notifications/NotificationsUI.java index cb92c4259504c..5e63b90203a52 100644 --- a/packages/CarSystemUI/src/com/android/systemui/notifications/NotificationsUI.java +++ b/packages/CarSystemUI/src/com/android/systemui/notifications/NotificationsUI.java @@ -16,6 +16,7 @@ package com.android.systemui.notifications; +import android.app.ActivityManager; import android.car.Car; import android.car.CarNotConnectedException; import android.car.drivingstate.CarUxRestrictionsManager; @@ -24,6 +25,7 @@ import android.content.Context; import android.content.ServiceConnection; import android.graphics.PixelFormat; import android.os.IBinder; +import android.os.ServiceManager; import android.util.Log; import android.view.View; import android.view.ViewGroup; @@ -31,8 +33,10 @@ import android.view.WindowManager; import com.android.car.notification.CarNotificationListener; import com.android.car.notification.CarUxRestrictionManagerWrapper; +import com.android.car.notification.NotificationClickHandlerFactory; import com.android.car.notification.NotificationViewController; import com.android.car.notification.PreprocessingManager; +import com.android.internal.statusbar.IStatusBarService; import com.android.systemui.R; import com.android.systemui.SystemUI; @@ -44,6 +48,7 @@ public class NotificationsUI extends SystemUI { private static final String TAG = "NotificationsUI"; private CarNotificationListener mCarNotificationListener; private CarUxRestrictionsManager mCarUxRestrictionsManager; + private NotificationClickHandlerFactory mClickHandlerFactory; private Car mCar; private ViewGroup mCarNotificationWindow; private NotificationViewController mNotificationViewController; @@ -60,7 +65,17 @@ public class NotificationsUI extends SystemUI { WindowManager windowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); mCarNotificationListener = new CarNotificationListener(); - mCarNotificationListener.registerAsSystemService(mContext, mCarUxRestrictionManagerWrapper); + mClickHandlerFactory = new NotificationClickHandlerFactory( + IStatusBarService.Stub.asInterface( + ServiceManager.getService(Context.STATUS_BAR_SERVICE)), + launchResult -> { + if (launchResult == ActivityManager.START_TASK_TO_FRONT + || launchResult == ActivityManager.START_SUCCESS) { + closeCarNotifications(); + } + }); + mCarNotificationListener.registerAsSystemService(mContext, mCarUxRestrictionManagerWrapper, + mClickHandlerFactory); mCar = Car.createCar(mContext, mCarConnectionListener); mCar.connect();