summaryrefslogtreecommitdiff
path: root/WifiDialog/src
diff options
context:
space:
mode:
author Antonino Faraone <afaraone@google.com> 2023-03-24 09:47:16 +0000
committer Quang Luong <qal@google.com> 2023-03-29 00:00:33 +0000
commit45d77574b97d8c158465e033f93dab54e1ce797d (patch)
tree2eb458435bc337bc01fde0f36fe475a145c42d33 /WifiDialog/src
parent53d20d2fa5e99a3f191052afcbc877c4924e0832 (diff)
Fix permission issue of WifiDialog
Add INTERNAL_SYSTEM_WINDOW manifest permission to fix "permission denied for window type 2008" error Bug: 275486387 Test: Manual Change-Id: I495f04b047bd267bcc923e2e1e36124c0a97db45
Diffstat (limited to 'WifiDialog/src')
-rw-r--r--WifiDialog/src/com/android/wifi/dialog/WifiDialogActivity.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/WifiDialog/src/com/android/wifi/dialog/WifiDialogActivity.java b/WifiDialog/src/com/android/wifi/dialog/WifiDialogActivity.java
index 3c4a0f2d4c..7de00f9ff0 100644
--- a/WifiDialog/src/com/android/wifi/dialog/WifiDialogActivity.java
+++ b/WifiDialog/src/com/android/wifi/dialog/WifiDialogActivity.java
@@ -62,6 +62,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.core.os.BuildCompat;
import java.util.ArrayList;
import java.util.List;
@@ -255,6 +256,13 @@ public class WifiDialogActivity extends Activity {
protected void onStop() {
super.onStop();
if (!isChangingConfigurations()) {
+ if (!BuildCompat.isAtLeastU()) {
+ // Before U, we don't have INTERNAL_SYSTEM_WINDOW permission to always show at the
+ // top, so close all dialogs when we're not visible anymore.
+ for (int i = 0; i < mActiveDialogsPerId.size(); i++) {
+ mActiveDialogsPerId.get(i).cancel();
+ }
+ }
return;
}
// If we're stopping due to a configuration change, dismiss all the dialogs without
@@ -378,7 +386,9 @@ public class WifiDialogActivity extends Activity {
if (mGravity != Gravity.NO_GRAVITY) {
dialog.getWindow().setGravity(mGravity);
}
- dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
+ if (BuildCompat.isAtLeastU()) {
+ dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
+ }
mActiveDialogsPerId.put(dialogId, dialog);
long timeoutMs = intent.getLongExtra(WifiManager.EXTRA_DIALOG_TIMEOUT_MS, 0);
if (timeoutMs > 0) {