diff options
| author | 2024-09-18 21:04:14 +0000 | |
|---|---|---|
| committer | 2024-09-18 21:04:14 +0000 | |
| commit | 32955076ad40b5d10af002ebee612d294c44c4a9 (patch) | |
| tree | a658336f31f6af2dfa493704f0967f01877d1f00 | |
| parent | b75be8b802fe346702b0b09ab2e7aaa7994acdea (diff) | |
| parent | c9d931c97e915ee4398b6ea41d7b398cb33e1bc2 (diff) | |
Merge "Request dismissing keyguard when showing MediaProjection Dialog" into main
| -rw-r--r-- | packages/SystemUI/aconfig/systemui.aconfig | 10 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionActivity.java | 23 |
2 files changed, 32 insertions, 1 deletions
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig index 855ebe3799b8..ce35daec1812 100644 --- a/packages/SystemUI/aconfig/systemui.aconfig +++ b/packages/SystemUI/aconfig/systemui.aconfig @@ -1415,3 +1415,13 @@ flag { description: "Allow non-touchscreen devices to bypass falsing" bug: "319809270" } + +flag { + name: "media_projection_dialog_behind_lockscreen" + namespace: "systemui" + description: "Ensure MediaProjection Dialog appears behind the lockscreen" + bug: "351409536" + metadata { + purpose: PURPOSE_BUGFIX + } +}
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionActivity.java b/packages/SystemUI/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionActivity.java index 4251b81226b3..8351597f35de 100644 --- a/packages/SystemUI/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionActivity.java +++ b/packages/SystemUI/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionActivity.java @@ -34,6 +34,7 @@ import android.annotation.RequiresPermission; import android.app.Activity; import android.app.ActivityOptions.LaunchCookie; import android.app.AlertDialog; +import android.app.KeyguardManager; import android.app.StatusBarManager; import android.app.compat.CompatChanges; import android.content.Context; @@ -83,6 +84,7 @@ public class MediaProjectionPermissionActivity extends Activity { private final StatusBarManager mStatusBarManager; private final MediaProjectionMetricsLogger mMediaProjectionMetricsLogger; private final ScreenCaptureDisabledDialogDelegate mScreenCaptureDisabledDialogDelegate; + private final KeyguardManager mKeyguardManager; private String mPackageName; private int mUid; @@ -101,11 +103,13 @@ public class MediaProjectionPermissionActivity extends Activity { FeatureFlags featureFlags, Lazy<ScreenCaptureDevicePolicyResolver> screenCaptureDevicePolicyResolver, StatusBarManager statusBarManager, + KeyguardManager keyguardManager, MediaProjectionMetricsLogger mediaProjectionMetricsLogger, ScreenCaptureDisabledDialogDelegate screenCaptureDisabledDialogDelegate) { mFeatureFlags = featureFlags; mScreenCaptureDevicePolicyResolver = screenCaptureDevicePolicyResolver; mStatusBarManager = statusBarManager; + mKeyguardManager = keyguardManager; mMediaProjectionMetricsLogger = mediaProjectionMetricsLogger; mScreenCaptureDisabledDialogDelegate = screenCaptureDisabledDialogDelegate; } @@ -208,7 +212,14 @@ public class MediaProjectionPermissionActivity extends Activity { } setUpDialog(mDialog); - mDialog.show(); + + boolean shouldDismissKeyguard = + com.android.systemui.Flags.mediaProjectionDialogBehindLockscreen(); + if (shouldDismissKeyguard && mKeyguardManager.isDeviceLocked()) { + requestDeviceUnlock(); + } else { + mDialog.show(); + } if (savedInstanceState == null) { mMediaProjectionMetricsLogger.notifyPermissionRequestDisplayed(mUid); @@ -332,6 +343,16 @@ public class MediaProjectionPermissionActivity extends Activity { return false; } + private void requestDeviceUnlock() { + mKeyguardManager.requestDismissKeyguard(this, + new KeyguardManager.KeyguardDismissCallback() { + @Override + public void onDismissSucceeded() { + mDialog.show(); + } + }); + } + private void grantMediaProjectionPermission( int screenShareMode, boolean hasCastingCapabilities) { try { |