diff options
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) { |