[Catalyst] Refine Wi-Fi preferences

- Use application context to get system services to avoid memory leaks

NO_IFTTT=Catalyst only

Bug: 385116691
Flag: EXEMPT bugfix
Test: Manual testing
atest -c WifiHotspotSwitchPreferenceTest \
         WifiSwitchPreferenceTest

Change-Id: I4340136d8d0118801ef450809424127f84afbb92
This commit is contained in:
Weng Su
2024-12-19 23:11:54 +08:00
parent 341fe8eb13
commit 9d83ce76ba
5 changed files with 159 additions and 20 deletions

View File

@@ -30,6 +30,8 @@ import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R
import com.android.settings.network.SatelliteRepository.Companion.isSatelliteOn
import com.android.settings.network.SatelliteWarningDialogActivity
import com.android.settings.wifi.utils.isWifiEnabled
import com.android.settings.wifi.utils.wifiManager
import com.android.settingslib.RestrictedSwitchPreference
import com.android.settingslib.WirelessUtils
import com.android.settingslib.datastore.AbstractKeyedDataObservable
@@ -118,16 +120,14 @@ class WifiSwitchPreference :
private var broadcastReceiver: BroadcastReceiver? = null
override fun contains(key: String) =
key == KEY && context.getSystemService(WifiManager::class.java) != null
override fun contains(key: String) = key == KEY && context.wifiManager != null
override fun <T : Any> getValue(key: String, valueType: Class<T>): T? =
context.getSystemService(WifiManager::class.java)?.isWifiEnabled as T?
context.isWifiEnabled as T?
@Suppress("DEPRECATION")
override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) {
if (value is Boolean) {
context.getSystemService(WifiManager::class.java)?.isWifiEnabled = value
context.isWifiEnabled = value
}
}