diff --git a/src/com/android/settings/network/AirplaneModePreference.kt b/src/com/android/settings/network/AirplaneModePreference.kt
index d9d1bd8..0899add 100644
--- a/src/com/android/settings/network/AirplaneModePreference.kt
+++ b/src/com/android/settings/network/AirplaneModePreference.kt
@@ -28,8 +28,7 @@
 
 // LINT.IfChange
 class AirplaneModePreference :
-    SwitchPreference(KEY, R.string.airplane_mode),
-    PreferenceAvailabilityProvider {
+    SwitchPreference(KEY, R.string.airplane_mode), PreferenceAvailabilityProvider {
 
     override val icon: Int
         @DrawableRes get() = R.drawable.ic_airplanemode_active
@@ -40,11 +39,13 @@
         get() = SensitivityLevel.HIGH_SENSITIVITY
 
     override fun isAvailable(context: Context) =
-        (context.resources.getBoolean(R.bool.config_show_toggle_airplane)
-                && !context.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK))
+        (context.resources.getBoolean(R.bool.config_show_toggle_airplane) &&
+            !context.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK))
 
     companion object {
         const val KEY = Settings.Global.AIRPLANE_MODE_ON
+
+        fun Context.isAirplaneModeOn() = SettingsGlobalStore.get(this).getBoolean(KEY) == true
     }
 }
 // LINT.ThenChange(AirplaneModePreferenceController.java)
diff --git a/src/com/android/settings/network/MobileNetworkListScreen.kt b/src/com/android/settings/network/MobileNetworkListScreen.kt
index 2e05e3a..9f629c7 100644
--- a/src/com/android/settings/network/MobileNetworkListScreen.kt
+++ b/src/com/android/settings/network/MobileNetworkListScreen.kt
@@ -17,15 +17,49 @@
 
 import android.content.Context
 import android.os.UserManager
+import android.telephony.SubscriptionInfo
+import android.telephony.SubscriptionManager
+import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener
+import androidx.preference.Preference
+import androidx.preference.Preference.OnPreferenceClickListener
 import com.android.settings.PreferenceRestrictionMixin
 import com.android.settings.R
 import com.android.settings.flags.Flags
+import com.android.settings.network.AirplaneModePreference.Companion.isAirplaneModeOn
+import com.android.settings.network.SubscriptionUtil.getUniqueSubscriptionDisplayName
+import com.android.settings.network.telephony.SimRepository
+import com.android.settings.network.telephony.SubscriptionRepository
+import com.android.settings.network.telephony.euicc.EuiccRepository
+import com.android.settings.spa.network.getAddSimIntent
+import com.android.settings.spa.network.startAddSimFlow
+import com.android.settingslib.RestrictedPreference
+import com.android.settingslib.datastore.HandlerExecutor
+import com.android.settingslib.datastore.KeyedObserver
+import com.android.settingslib.datastore.SettingsGlobalStore
+import com.android.settingslib.metadata.PreferenceAvailabilityProvider
+import com.android.settingslib.metadata.PreferenceLifecycleContext
+import com.android.settingslib.metadata.PreferenceLifecycleProvider
+import com.android.settingslib.metadata.PreferenceMetadata
+import com.android.settingslib.metadata.PreferenceSummaryProvider
 import com.android.settingslib.metadata.ProvidePreferenceScreen
 import com.android.settingslib.metadata.preferenceHierarchy
+import com.android.settingslib.preference.PreferenceScreenBinding
 import com.android.settingslib.preference.PreferenceScreenCreator
 
 @ProvidePreferenceScreen
-class MobileNetworkListScreen : PreferenceScreenCreator, PreferenceRestrictionMixin {
+class MobileNetworkListScreen :
+    PreferenceScreenCreator,
+    PreferenceScreenBinding,
+    PreferenceAvailabilityProvider,
+    PreferenceSummaryProvider,
+    PreferenceLifecycleProvider,
+    PreferenceRestrictionMixin,
+    OnPreferenceClickListener {
+
+    private var airplaneModeObserver: KeyedObserver<String>? = null
+    private var subscriptionInfoList: List<SubscriptionInfo>? = null
+    private var onSubscriptionsChangedListener: OnSubscriptionsChangedListener? = null
+
     override val key: String
         get() = KEY
 
@@ -38,11 +72,87 @@
     override val keywords: Int
         get() = R.string.keywords_more_mobile_networks
 
-    override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)
+    override fun intent(context: Context) = getAddSimIntent()
+
+    override fun getSummary(context: Context): CharSequence? {
+        val list = getSelectableSubscriptionInfoList(context)
+        return when {
+            list.isNotEmpty() ->
+                list
+                    .map { getUniqueSubscriptionDisplayName(it, context).toString() }
+                    .distinct()
+                    .joinToString(", ")
+            EuiccRepository(context).showEuiccSettings() ->
+                context.getString(R.string.mobile_network_summary_add_a_network)
+            else -> null
+        }
+    }
+
+    override fun isAvailable(context: Context) =
+        SimRepository(context).showMobileNetworkPageEntrance()
+
+    override fun isEnabled(context: Context) =
+        super<PreferenceRestrictionMixin>.isEnabled(context) &&
+            !context.isAirplaneModeOn() &&
+            (getSelectableSubscriptionInfoList(context).isNotEmpty() ||
+                EuiccRepository(context).showEuiccSettings())
+
+    private fun getSelectableSubscriptionInfoList(context: Context): List<SubscriptionInfo> =
+        subscriptionInfoList
+            ?: SubscriptionRepository(context).getSelectableSubscriptionInfoList().also {
+                subscriptionInfoList = it
+            }
 
     override val restrictionKeys
         get() = arrayOf(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)
 
+    override val useAdminDisabledSummary
+        get() = true
+
+    override fun createWidget(context: Context) = RestrictedPreference(context)
+
+    override fun bind(preference: Preference, metadata: PreferenceMetadata) {
+        super.bind(preference, metadata)
+        preference.onPreferenceClickListener = this
+    }
+
+    override fun onPreferenceClick(preference: Preference): Boolean {
+        val summary = preference.summary ?: return true // no-op
+        val context = preference.context
+        if (summary == context.getString(R.string.mobile_network_summary_add_a_network)) {
+            startAddSimFlow(context) // start intent
+            return true
+        }
+        return false // start fragment
+    }
+
+    override fun onCreate(context: PreferenceLifecycleContext) {
+        val executor = HandlerExecutor.main
+        val observer = KeyedObserver<String> { _, _ -> context.notifyPreferenceChange(KEY) }
+        airplaneModeObserver = observer
+        SettingsGlobalStore.get(context).addObserver(AirplaneModePreference.KEY, observer, executor)
+        context.getSystemService(SubscriptionManager::class.java)?.let {
+            val listener =
+                object : OnSubscriptionsChangedListener() {
+                    override fun onSubscriptionsChanged() {
+                        subscriptionInfoList = null // invalid cache
+                        context.notifyPreferenceChange(KEY)
+                    }
+                }
+            it.addOnSubscriptionsChangedListener(executor, listener)
+            onSubscriptionsChangedListener = listener
+        }
+    }
+
+    override fun onDestroy(context: PreferenceLifecycleContext) {
+        airplaneModeObserver?.let {
+            SettingsGlobalStore.get(context).removeObserver(AirplaneModePreference.KEY, it)
+        }
+        context.getSystemService(SubscriptionManager::class.java)?.apply {
+            onSubscriptionsChangedListener?.let { removeOnSubscriptionsChangedListener(it) }
+        }
+    }
+
     override fun isFlagEnabled(context: Context) = Flags.catalystMobileNetworkList()
 
     override fun hasCompleteHierarchy() = false
diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.kt b/src/com/android/settings/network/MobileNetworkSummaryController.kt
index 8cf9bec..62c5766 100644
--- a/src/com/android/settings/network/MobileNetworkSummaryController.kt
+++ b/src/com/android/settings/network/MobileNetworkSummaryController.kt
@@ -41,6 +41,7 @@
  * - Has subscriptions: click action takes you to a page listing the subscriptions, and the summary
  *   text gives the count of SIMs
  */
+// LINT.IfChange
 class MobileNetworkSummaryController
 @JvmOverloads
 constructor(
@@ -119,3 +120,4 @@
         )
     }
 }
+// LINT.ThenChange(MobileNetworkListScreen.kt)
diff --git a/src/com/android/settings/network/NetworkDashboardScreen.kt b/src/com/android/settings/network/NetworkDashboardScreen.kt
index 3fb2cbe..5dadcaf 100644
--- a/src/com/android/settings/network/NetworkDashboardScreen.kt
+++ b/src/com/android/settings/network/NetworkDashboardScreen.kt
@@ -46,6 +46,7 @@
 
     override fun getPreferenceHierarchy(context: Context) =
         preferenceHierarchy(this) {
+            +MobileNetworkListScreen.KEY order -15
             +DataSaverScreen.KEY order 10
         }
 
diff --git a/src/com/android/settings/spa/network/SimsSection.kt b/src/com/android/settings/spa/network/SimsSection.kt
index 7d88748..fa7fa44 100644
--- a/src/com/android/settings/spa/network/SimsSection.kt
+++ b/src/com/android/settings/spa/network/SimsSection.kt
@@ -137,9 +137,9 @@
     }
 }
 
-fun startAddSimFlow(context: Context) {
-    val intent = Intent(EuiccManager.ACTION_PROVISION_EMBEDDED_SUBSCRIPTION)
-    intent.setPackage(Utils.PHONE_PACKAGE_NAME)
-    intent.putExtra(EuiccManager.EXTRA_FORCE_PROVISION, true)
-    context.startActivity(intent)
+fun startAddSimFlow(context: Context) = context.startActivity(getAddSimIntent())
+
+fun getAddSimIntent() = Intent(EuiccManager.ACTION_PROVISION_EMBEDDED_SUBSCRIPTION).apply {
+    setPackage(Utils.PHONE_PACKAGE_NAME)
+    putExtra(EuiccManager.EXTRA_FORCE_PROVISION, true)
 }
