From 64987b0bea79e793b3d05627907024d97ce4d2f5 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Fri, 23 Aug 2024 06:16:33 +0800 Subject: [PATCH] Avoid launching Wi-Fi details settings if WifiEntry key is lost - When restarting Wi-Fi details settings from the recent apps, the extra data of the sent Intent may be lost, resulting in the loss of the necessary WifiEntry key - Don't launch Wi-Fi details settings and remove it from recent apps in the above case Fix: 349180072 Flag: EXEMPT bugfix Test: Manual testing Change-Id: Ifa9718b0197ab27b77c24b706f7974a664980fba --- src/com/android/settings/Settings.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index 24d9525e87c..8321588fd12 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -27,6 +27,8 @@ import android.telephony.ims.ImsRcsManager; import android.text.TextUtils; import android.util.Log; +import androidx.annotation.Nullable; + import com.android.internal.annotations.VisibleForTesting; import com.android.settings.biometrics.face.FaceSettings; import com.android.settings.communal.CommunalPreferenceController; @@ -35,6 +37,7 @@ import com.android.settings.network.MobileNetworkIntentConverter; import com.android.settings.overlay.FeatureFactory; import com.android.settings.safetycenter.SafetyCenterManagerWrapper; import com.android.settings.security.SecuritySettingsFeatureProvider; +import com.android.settings.wifi.WifiUtils; import com.google.android.setupdesign.util.ThemeHelper; @@ -73,7 +76,18 @@ public class Settings extends SettingsActivity { public static class NetworkProviderSettingsActivity extends SettingsActivity { /* empty */ } public static class NetworkSelectActivity extends SettingsActivity { /* empty */ } /** Activity for the Wi-Fi network details settings. */ - public static class WifiDetailsSettingsActivity extends SettingsActivity { /* empty */ } + public static class WifiDetailsSettingsActivity extends SettingsActivity { + @Override + protected void createUiFromIntent(@Nullable Bundle savedState, Intent intent) { + Bundle bundle = getIntent().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS); + if (TextUtils.isEmpty(bundle.getString(WifiUtils.KEY_CHOSEN_WIFIENTRY_KEY))) { + Log.e(getLocalClassName(), "The key of WifiEntry is empty!"); + finishAndRemoveTask(); + return; + } + super.createUiFromIntent(savedState, intent); + } + } public static class WifiP2pSettingsActivity extends SettingsActivity { /* empty */ } public static class AvailableVirtualKeyboardActivity extends SettingsActivity { /* empty */ } public static class KeyboardLayoutPickerActivity extends SettingsActivity { /* empty */ }