Create phoneNumberFlow

Bug: 318310357
Test: manual - on Mobile Settings
Change-Id: Ib80b6c510ebd89650557240add23d914934ba6c9
This commit is contained in:
Chaohui Wang
2024-03-04 13:52:18 +08:00
parent 7eb6df8ee7
commit c8edb018a4
2 changed files with 11 additions and 1 deletions

View File

@@ -17,8 +17,10 @@
package com.android.settings.network.telephony package com.android.settings.network.telephony
import android.content.Context import android.content.Context
import android.telephony.SubscriptionInfo
import android.telephony.SubscriptionManager import android.telephony.SubscriptionManager
import android.util.Log import android.util.Log
import com.android.settings.network.SubscriptionUtil
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.asExecutor import kotlinx.coroutines.asExecutor
import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.channels.awaitClose
@@ -36,6 +38,10 @@ fun Context.isSubscriptionEnabledFlow(subId: Int) = subscriptionsChangedFlow().m
subscriptionManager?.isSubscriptionEnabled(subId) ?: false subscriptionManager?.isSubscriptionEnabled(subId) ?: false
}.flowOn(Dispatchers.Default) }.flowOn(Dispatchers.Default)
fun Context.phoneNumberFlow(subscriptionInfo: SubscriptionInfo) = subscriptionsChangedFlow().map {
SubscriptionUtil.getFormattedPhoneNumber(this, subscriptionInfo)
}.flowOn(Dispatchers.Default)
fun Context.subscriptionsChangedFlow() = callbackFlow { fun Context.subscriptionsChangedFlow() = callbackFlow {
val subscriptionManager = getSystemService(SubscriptionManager::class.java)!! val subscriptionManager = getSystemService(SubscriptionManager::class.java)!!

View File

@@ -33,6 +33,7 @@ import com.android.settings.R
import com.android.settings.network.SubscriptionUtil import com.android.settings.network.SubscriptionUtil
import com.android.settings.network.telephony.MobileNetworkUtils import com.android.settings.network.telephony.MobileNetworkUtils
import com.android.settings.network.telephony.isSubscriptionEnabledFlow import com.android.settings.network.telephony.isSubscriptionEnabledFlow
import com.android.settings.network.telephony.phoneNumberFlow
import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
import com.android.settingslib.spa.widget.preference.TwoTargetSwitchPreference import com.android.settingslib.spa.widget.preference.TwoTargetSwitchPreference
@@ -57,11 +58,14 @@ private fun SimPreference(subInfo: SubscriptionInfo) {
val checked = remember(subInfo.subscriptionId) { val checked = remember(subInfo.subscriptionId) {
context.isSubscriptionEnabledFlow(subInfo.subscriptionId) context.isSubscriptionEnabledFlow(subInfo.subscriptionId)
}.collectAsStateWithLifecycle(initialValue = false) }.collectAsStateWithLifecycle(initialValue = false)
val phoneNumber = remember(subInfo) {
context.phoneNumberFlow(subInfo)
}.collectAsStateWithLifecycle(initialValue = null)
//TODO: Add the Restricted TwoTargetSwitchPreference in SPA //TODO: Add the Restricted TwoTargetSwitchPreference in SPA
TwoTargetSwitchPreference( TwoTargetSwitchPreference(
object : SwitchPreferenceModel { object : SwitchPreferenceModel {
override val title = subInfo.displayName.toString() override val title = subInfo.displayName.toString()
override val summary = { subInfo.number } override val summary = { phoneNumber.value ?: "" }
override val checked = { checked.value } override val checked = { checked.value }
override val onCheckedChange = { newChecked: Boolean -> override val onCheckedChange = { newChecked: Boolean ->
SubscriptionUtil.startToggleSubscriptionDialogActivity( SubscriptionUtil.startToggleSubscriptionDialogActivity(