Loading packages/SystemUI/aconfig/systemui.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -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 packages/SystemUI/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionActivity.java +22 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; } Loading Loading @@ -208,7 +212,14 @@ public class MediaProjectionPermissionActivity extends Activity { } setUpDialog(mDialog); boolean shouldDismissKeyguard = com.android.systemui.Flags.mediaProjectionDialogBehindLockscreen(); if (shouldDismissKeyguard && mKeyguardManager.isDeviceLocked()) { requestDeviceUnlock(); } else { mDialog.show(); } if (savedInstanceState == null) { mMediaProjectionMetricsLogger.notifyPermissionRequestDisplayed(mUid); Loading Loading @@ -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 { Loading Loading
packages/SystemUI/aconfig/systemui.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -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
packages/SystemUI/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionActivity.java +22 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; } Loading Loading @@ -208,7 +212,14 @@ public class MediaProjectionPermissionActivity extends Activity { } setUpDialog(mDialog); boolean shouldDismissKeyguard = com.android.systemui.Flags.mediaProjectionDialogBehindLockscreen(); if (shouldDismissKeyguard && mKeyguardManager.isDeviceLocked()) { requestDeviceUnlock(); } else { mDialog.show(); } if (savedInstanceState == null) { mMediaProjectionMetricsLogger.notifyPermissionRequestDisplayed(mUid); Loading Loading @@ -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 { Loading