summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Collin Fijalkovich <cfijalkovich@google.com> 2020-10-05 13:10:33 -0700
committer Joshua Trask <joshtrask@google.com> 2021-10-07 14:24:07 +0000
commit718c60bea7b9f8858306705aa60d8d5206271696 (patch)
tree4ee91f830fbcaf288beea2d5c925be117aff34cd
parenta68d603483c4c6845054a4f237cb2d10da97204c (diff)
Disallow overlays for ResolverActivity
Prevents non-system apps from placing a window over the app selection screen. Bug: 143559931 Test: Installed test app and attempted to overlay Change-Id: Ied05088a5007e0f10cd3e1abd8d7da8ffeb3b674 Merged-In: Ied05088a5007e0f10cd3e1abd8d7da8ffeb3b674 (cherry picked from commit 34534e1fd2057ea6d858ce82f8505cbdb1026d9a)
-rw-r--r--core/java/com/android/internal/app/ResolverActivity.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index fadc15912dc1..24bbe749aaef 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -19,6 +19,7 @@ package com.android.internal.app;
import static android.Manifest.permission.INTERACT_ACROSS_PROFILES;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.content.PermissionChecker.PID_UNKNOWN;
+import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
import android.annotation.Nullable;
import android.annotation.StringRes;
@@ -69,7 +70,9 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
+import android.view.Window;
import android.view.WindowInsets;
+import android.view.WindowManager;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.Button;
@@ -101,7 +104,6 @@ import java.util.List;
import java.util.Objects;
import java.util.Set;
-
/**
* This activity is displayed when the system attempts to start an Intent for
* which there is more than one matching activity, allowing the user to decide
@@ -822,6 +824,8 @@ public class ResolverActivity extends Activity implements
@Override
protected void onStart() {
super.onStart();
+
+ this.getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
if (shouldShowTabs()) {
mWorkProfileStateReceiver = createWorkProfileStateReceiver();
registerWorkProfileStateReceiver();
@@ -849,6 +853,12 @@ public class ResolverActivity extends Activity implements
@Override
protected void onStop() {
super.onStop();
+
+ final Window window = this.getWindow();
+ final WindowManager.LayoutParams attrs = window.getAttributes();
+ attrs.privateFlags &= ~SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+ window.setAttributes(attrs);
+
if (mRegistered) {
mPersonalPackageMonitor.unregister();
if (mWorkPackageMonitor != null) {