From 407f69fec58f7ebcd0f0a2fc93c032e65ec9f5a0 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Fri, 30 Aug 2024 16:24:49 +0800 Subject: [PATCH] Fix WifiPrivacy for special SSID AP - root cause: specail SSID AP(contain '%', end with '\' or '/' and end with '???'), andriodx Navigation cannot find destination - changes: use Base64 UrlEncode replace String Bug: 360304229 Flag: EXEMPT bugfix Test: Manual testing atest -c WifiPrivacyPageProviderTest Change-Id: Ifb89451477f2ba143f504b94c8d4d9167aee2c2e --- .../settings/wifi/details2/WifiPrivacyPageProvider.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/wifi/details2/WifiPrivacyPageProvider.kt b/src/com/android/settings/wifi/details2/WifiPrivacyPageProvider.kt index 7744a73cc17..8888f0dacf5 100644 --- a/src/com/android/settings/wifi/details2/WifiPrivacyPageProvider.kt +++ b/src/com/android/settings/wifi/details2/WifiPrivacyPageProvider.kt @@ -55,6 +55,7 @@ import com.android.settingslib.spa.widget.ui.CategoryTitle import com.android.wifitrackerlib.WifiEntry import java.time.Clock import java.time.ZoneOffset +import java.util.Base64 const val WIFI_ENTRY_KEY = "wifiEntryKey" @@ -68,7 +69,8 @@ object WifiPrivacyPageProvider : SettingsPageProvider { @Composable override fun Page(arguments: Bundle?) { - val wifiEntryKey = arguments!!.getString(WIFI_ENTRY_KEY) + val wifiEntryKey = + String(Base64.getUrlDecoder().decode(arguments!!.getString(WIFI_ENTRY_KEY))) if (wifiEntryKey != null) { val context = LocalContext.current val lifecycle = LocalLifecycleOwner.current.lifecycle @@ -81,7 +83,7 @@ object WifiPrivacyPageProvider : SettingsPageProvider { fun getRoute( wifiEntryKey: String, - ): String = "${name}/$wifiEntryKey" + ): String = "${name}/${Base64.getUrlEncoder().encodeToString(wifiEntryKey.toByteArray())}" } @Composable