diff options
author | 2023-03-24 09:47:16 +0000 | |
---|---|---|
committer | 2023-03-29 00:00:33 +0000 | |
commit | 45d77574b97d8c158465e033f93dab54e1ce797d (patch) | |
tree | 2eb458435bc337bc01fde0f36fe475a145c42d33 /WifiDialog/src | |
parent | 53d20d2fa5e99a3f191052afcbc877c4924e0832 (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.java | 12 |
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) { |