From 543f6f56d97773da7e674db8a3a741e521c25685 Mon Sep 17 00:00:00 2001 From: Michal Brzezinski Date: Wed, 6 Sep 2023 18:58:14 +0100 Subject: Close shade when opening MediaProjectionAppSelectorActivity When shade is open and media projection dialog starts MediaProjectionAppSelectorActivity it will be below shade and not visible. We want to close it when that happens. Using StatusBarManager because using standard SysUI components (like ShadeController) would not work in secondary SysUI process when using another user (see b/298099682 for more info).. Fixes: 285291564 Test: MediaProjectionPermissionTest#startSingleTask_shadeWasOpen_closesShade Change-Id: I4c71d58c6c0cb8eb2a670b7059be48169254f354 --- .../src/com/android/systemui/dagger/FrameworkServicesModule.java | 7 +++++++ .../android/systemui/media/MediaProjectionPermissionActivity.java | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java b/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java index 0dcba50df4ca..ef0f4941d4cd 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java @@ -29,6 +29,7 @@ import android.app.IWallpaperManager; import android.app.KeyguardManager; import android.app.NotificationManager; import android.app.StatsManager; +import android.app.StatusBarManager; import android.app.UiModeManager; import android.app.WallpaperManager; import android.app.admin.DevicePolicyManager; @@ -680,4 +681,10 @@ public class FrameworkServicesModule { static TextClassificationManager provideTextClassificationManager(Context context) { return context.getSystemService(TextClassificationManager.class); } + + @Provides + @Singleton + static StatusBarManager provideStatusBarManager(Context context) { + return context.getSystemService(StatusBarManager.class); + } } diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java b/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java index 4be572f8c0f6..d403788f2c66 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java @@ -29,6 +29,7 @@ import android.annotation.Nullable; import android.app.Activity; import android.app.ActivityManager; import android.app.AlertDialog; +import android.app.StatusBarManager; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -72,6 +73,7 @@ public class MediaProjectionPermissionActivity extends Activity private final FeatureFlags mFeatureFlags; private final Lazy mScreenCaptureDevicePolicyResolver; + private final StatusBarManager mStatusBarManager; private String mPackageName; private int mUid; @@ -87,9 +89,11 @@ public class MediaProjectionPermissionActivity extends Activity @Inject public MediaProjectionPermissionActivity(FeatureFlags featureFlags, - Lazy screenCaptureDevicePolicyResolver) { + Lazy screenCaptureDevicePolicyResolver, + StatusBarManager statusBarManager) { mFeatureFlags = featureFlags; mScreenCaptureDevicePolicyResolver = screenCaptureDevicePolicyResolver; + mStatusBarManager = statusBarManager; } @Override @@ -311,6 +315,8 @@ public class MediaProjectionPermissionActivity extends Activity // WM Shell running inside. mUserSelectingTask = true; startActivityAsUser(intent, UserHandle.of(ActivityManager.getCurrentUser())); + // close shade if it's open + mStatusBarManager.collapsePanels(); } } catch (RemoteException e) { Log.e(TAG, "Error granting projection permission", e); -- cgit v1.2.3-59-g8ed1b