diff options
author | Wale Ogunwale <ogunwale@google.com> | 2018-05-16 16:42:29 -0700 |
---|---|---|
committer | Tim Schumacher <timschumi@gmx.de> | 2019-02-02 15:47:14 +0100 |
commit | 8af807f8762701e2908789a50901426dbe67199b (patch) | |
tree | 6ee2ad99978736f0166afa9464e15ea01586309c /packages/SystemUI | |
parent | f4cc356cfd45ff6c2e5ad12e70d7a872720bbe96 (diff) | |
download | frameworks_base-8af807f8762701e2908789a50901426dbe67199b.tar.gz frameworks_base-8af807f8762701e2908789a50901426dbe67199b.tar.bz2 frameworks_base-8af807f8762701e2908789a50901426dbe67199b.zip |
RESTRICT AUTOMERGE: Hide overlay windows when requesting media projection permission.
1: Cherry-pick ag/4067454 - Setting PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS
updateNonSystemOverlayWindowsVisibilityIfNeeded on relayoutWindow
2: Cherry-pick ag/3650369 - If PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS changed on
relayoutWindow() then updateNonSystemOverlayWindowsVisibilityIfNeeded
3: Add permissions to SystemUI to allow it to hide non-system overlays
Bug: 34170870
Test: manual (see bug for poc)
Change-Id: I57cb0f390d9a78e721c5ddce49a377d385002753
(cherry picked from commit 40f7b5832291ec81b921d9d7598447653d926604)
Diffstat (limited to 'packages/SystemUI')
-rw-r--r-- | packages/SystemUI/AndroidManifest.xml | 3 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java | 7 |
2 files changed, 9 insertions, 1 deletions
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index d45b52b3d22..897c60c8a35 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -138,6 +138,9 @@ <!-- blur surface --> <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" /> + <!-- permission necessary to hide non-system overlay windows from covering up the SystemUI --> + <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS" /> + <application android:name=".SystemUIApplication" android:persistent="true" diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java b/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java index adc9b36f3d2..acb701281db 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java @@ -16,6 +16,8 @@ package com.android.systemui.media; +import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; + import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; @@ -38,6 +40,7 @@ import android.text.TextUtils; import android.text.style.StyleSpan; import android.util.Log; import android.util.TypedValue; +import android.view.Window; import android.view.WindowManager; import android.widget.CheckBox; import android.widget.CompoundButton; @@ -147,7 +150,9 @@ public class MediaProjectionPermissionActivity extends Activity mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setFilterTouchesWhenObscured(true); ((CheckBox) mDialog.findViewById(R.id.remember)).setOnCheckedChangeListener(this); - mDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); + final Window w = mDialog.getWindow(); + w.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); + w.addPrivateFlags(PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); mDialog.show(); } |