[Catalyst] Add SatelliteRepository.isSatelliteOn helper method

NO_IFTTT=Catalyst only

Bug: 335132588
Flag: EXEMPT refactor
Test: manual
Change-Id: Ib10f7f616a6deed438a129da4b2cb927915bfcda
This commit is contained in:
Jacky Wang
2024-12-09 17:19:40 +08:00
parent f79173a664
commit 95719f21b3
4 changed files with 22 additions and 34 deletions

View File

@@ -26,13 +26,13 @@ import android.os.UserManager
import android.provider.Settings import android.provider.Settings
import android.telephony.PhoneStateListener import android.telephony.PhoneStateListener
import android.telephony.TelephonyManager import android.telephony.TelephonyManager
import android.util.Log
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.preference.Preference import androidx.preference.Preference
import com.android.settings.AirplaneModeEnabler import com.android.settings.AirplaneModeEnabler
import com.android.settings.PreferenceRestrictionMixin import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R import com.android.settings.R
import com.android.settings.Utils import com.android.settings.Utils
import com.android.settings.network.SatelliteRepository.Companion.isSatelliteOn
import com.android.settingslib.RestrictedSwitchPreference import com.android.settingslib.RestrictedSwitchPreference
import com.android.settingslib.datastore.AbstractKeyedDataObservable import com.android.settingslib.datastore.AbstractKeyedDataObservable
import com.android.settingslib.datastore.DataChangeReason import com.android.settingslib.datastore.DataChangeReason
@@ -45,8 +45,6 @@ import com.android.settingslib.metadata.PreferenceLifecycleProvider
import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.metadata.SensitivityLevel
import com.android.settingslib.metadata.SwitchPreference import com.android.settingslib.metadata.SwitchPreference
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
// LINT.IfChange // LINT.IfChange
class AirplaneModePreference : class AirplaneModePreference :
@@ -113,9 +111,7 @@ class AirplaneModePreference :
context.getSystemService(TelephonyManager::class.java)?.let { context.getSystemService(TelephonyManager::class.java)?.let {
phoneStateListener = phoneStateListener =
object : PhoneStateListener(Looper.getMainLooper()) { object : PhoneStateListener(Looper.getMainLooper()) {
@Deprecated("Deprecated in Java")
override fun onRadioPowerStateChanged(state: Int) { override fun onRadioPowerStateChanged(state: Int) {
Log.d(TAG, "onRadioPowerStateChanged(), state=$state")
notifyChange(KEY, DataChangeReason.UPDATE) notifyChange(KEY, DataChangeReason.UPDATE)
} }
} }
@@ -163,17 +159,6 @@ class AirplaneModePreference :
context.getSystemService(TelephonyManager::class.java), context.getSystemService(TelephonyManager::class.java),
) )
private fun isSatelliteOn(context: Context): Boolean {
try {
return SatelliteRepository(context)
.requestIsSessionStarted(Executors.newSingleThreadExecutor())
.get(2000, TimeUnit.MILLISECONDS)
} catch (e: Exception) {
Log.e(TAG, "Error to get satellite status : $e")
}
return false
}
private fun showEcmDialog(context: PreferenceLifecycleContext) { private fun showEcmDialog(context: PreferenceLifecycleContext) {
val intent = val intent =
Intent(TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null) Intent(TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null)
@@ -192,7 +177,6 @@ class AirplaneModePreference :
} }
companion object { companion object {
const val TAG = "AirplaneModePreference"
const val KEY = Settings.Global.AIRPLANE_MODE_ON const val KEY = Settings.Global.AIRPLANE_MODE_ON
const val DEFAULT_VALUE = false const val DEFAULT_VALUE = false
const val REQUEST_CODE_EXIT_ECM = 1 const val REQUEST_CODE_EXIT_ECM = 1

View File

@@ -17,9 +17,12 @@ package com.android.settings.network
import android.content.Context import android.content.Context
import com.android.settings.R import com.android.settings.R
import com.android.settings.Settings.NetworkDashboardActivity
import com.android.settings.datausage.DataSaverScreen import com.android.settings.datausage.DataSaverScreen
import com.android.settings.flags.Flags import com.android.settings.flags.Flags
import com.android.settings.utils.makeLaunchIntent
import com.android.settingslib.metadata.PreferenceIconProvider import com.android.settingslib.metadata.PreferenceIconProvider
import com.android.settingslib.metadata.PreferenceMetadata
import com.android.settingslib.metadata.ProvidePreferenceScreen import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator import com.android.settingslib.preference.PreferenceScreenCreator
@@ -44,6 +47,9 @@ class NetworkDashboardScreen : PreferenceScreenCreator, PreferenceIconProvider {
override fun fragmentClass() = NetworkDashboardFragment::class.java override fun fragmentClass() = NetworkDashboardFragment::class.java
override fun getLaunchIntent(context: Context, metadata: PreferenceMetadata?) =
makeLaunchIntent(context, NetworkDashboardActivity::class.java, metadata?.key)
override fun getPreferenceHierarchy(context: Context) = override fun getPreferenceHierarchy(context: Context) =
preferenceHierarchy(this) { preferenceHierarchy(this) {
+MobileNetworkListScreen.KEY order -15 +MobileNetworkListScreen.KEY order -15

View File

@@ -26,6 +26,8 @@ import androidx.concurrent.futures.CallbackToFutureAdapter
import com.google.common.util.concurrent.Futures.immediateFuture import com.google.common.util.concurrent.Futures.immediateFuture
import com.google.common.util.concurrent.ListenableFuture import com.google.common.util.concurrent.ListenableFuture
import java.util.concurrent.Executor import java.util.concurrent.Executor
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.asExecutor import kotlinx.coroutines.asExecutor
@@ -203,5 +205,15 @@ class SatelliteRepository(
fun setIsSessionStartedForTesting(isEnabled: Boolean) { fun setIsSessionStartedForTesting(isEnabled: Boolean) {
this.isSessionStarted = isEnabled this.isSessionStarted = isEnabled
} }
fun isSatelliteOn(context: Context, timeoutMs: Long = 2000): Boolean =
try {
SatelliteRepository(context)
.requestIsSessionStarted(Executors.newSingleThreadExecutor())
.get(timeoutMs, TimeUnit.MILLISECONDS)
} catch (e: Exception) {
Log.e(TAG, "Error to get satellite status : $e")
false
}
} }
} }

View File

@@ -23,13 +23,12 @@ import android.content.IntentFilter
import android.net.wifi.WifiManager import android.net.wifi.WifiManager
import android.os.UserManager import android.os.UserManager
import android.provider.Settings import android.provider.Settings
import android.util.Log
import android.widget.Toast import android.widget.Toast
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.Preference.OnPreferenceChangeListener import androidx.preference.Preference.OnPreferenceChangeListener
import com.android.settings.PreferenceRestrictionMixin import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R import com.android.settings.R
import com.android.settings.network.SatelliteRepository import com.android.settings.network.SatelliteRepository.Companion.isSatelliteOn
import com.android.settings.network.SatelliteWarningDialogActivity import com.android.settings.network.SatelliteWarningDialogActivity
import com.android.settingslib.RestrictedSwitchPreference import com.android.settingslib.RestrictedSwitchPreference
import com.android.settingslib.WirelessUtils import com.android.settingslib.WirelessUtils
@@ -42,8 +41,6 @@ import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.metadata.SensitivityLevel
import com.android.settingslib.metadata.SwitchPreference import com.android.settingslib.metadata.SwitchPreference
import com.android.settingslib.preference.SwitchPreferenceBinding import com.android.settingslib.preference.SwitchPreferenceBinding
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
// LINT.IfChange // LINT.IfChange
class WifiSwitchPreference : class WifiSwitchPreference :
@@ -75,7 +72,7 @@ class WifiSwitchPreference :
val context = preference.context val context = preference.context
// Show dialog and do nothing under satellite mode. // Show dialog and do nothing under satellite mode.
if (context.isSatelliteOn()) { if (isSatelliteOn(context)) {
context.startActivity( context.startActivity(
Intent(context, SatelliteWarningDialogActivity::class.java) Intent(context, SatelliteWarningDialogActivity::class.java)
.putExtra( .putExtra(
@@ -100,7 +97,7 @@ class WifiSwitchPreference :
override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) = override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
when { when {
(value == true && !context.isRadioAllowed()) || context.isSatelliteOn() -> (value == true && !context.isRadioAllowed()) || isSatelliteOn(context) ->
ReadWritePermit.DISALLOW ReadWritePermit.DISALLOW
else -> ReadWritePermit.ALLOW else -> ReadWritePermit.ALLOW
} }
@@ -155,22 +152,11 @@ class WifiSwitchPreference :
} }
companion object { companion object {
const val TAG = "WifiSwitchPreference"
const val KEY = "main_toggle_wifi" const val KEY = "main_toggle_wifi"
private fun Context.isRadioAllowed() = private fun Context.isRadioAllowed() =
WirelessUtils.isRadioAllowed(this, Settings.Global.RADIO_WIFI) WirelessUtils.isRadioAllowed(this, Settings.Global.RADIO_WIFI)
private fun Context.isSatelliteOn() =
try {
SatelliteRepository(this)
.requestIsSessionStarted(Executors.newSingleThreadExecutor())
.get(2000, TimeUnit.MILLISECONDS)
} catch (e: Exception) {
Log.e(TAG, "Error to get satellite status : $e")
false
}
private val Intent.wifiState private val Intent.wifiState
get() = getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN) get() = getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN)
} }