diff --git a/src/com/android/settings/network/MobileNetworkRepository.java b/src/com/android/settings/network/MobileNetworkRepository.java
index 80c5464..54c571b 100644
--- a/src/com/android/settings/network/MobileNetworkRepository.java
+++ b/src/com/android/settings/network/MobileNetworkRepository.java
@@ -705,7 +705,8 @@
                     }
                     if (subInfo.isEmbedded()
                         && (subInfo.getProfileClass() == PROFILE_CLASS_PROVISIONING
-                        || (Flags.oemEnabledSatelliteFlag() && subInfo.isNtn()))) {
+                            || (Flags.oemEnabledSatelliteFlag()
+                            && subInfo.isOnlyNonTerrestrialNetwork()))) {
                         if (DEBUG) {
                             Log.d(TAG, "Do not insert the provisioning or satellite eSIM");
                         }
diff --git a/src/com/android/settings/sim/CallsSimListDialogFragment.java b/src/com/android/settings/sim/CallsSimListDialogFragment.java
index bc0ab08..bb82c2e 100644
--- a/src/com/android/settings/sim/CallsSimListDialogFragment.java
+++ b/src/com/android/settings/sim/CallsSimListDialogFragment.java
@@ -59,7 +59,8 @@
             SubscriptionInfo info = subscriptionManager.getActiveSubscriptionInfo(subId);
             if (info == null || (info.isEmbedded()
                 && (info.getProfileClass() == PROFILE_CLASS_PROVISIONING
-                || (Flags.oemEnabledSatelliteFlag() && info.isNtn())))) {
+                    || (Flags.oemEnabledSatelliteFlag()
+                        && info.isOnlyNonTerrestrialNetwork())))) {
                 continue;
             }
             result.add(subscriptionManager.getActiveSubscriptionInfo(subId));
diff --git a/src/com/android/settings/sim/PreferredSimDialogFragment.java b/src/com/android/settings/sim/PreferredSimDialogFragment.java
index c1e98f0..bb69440 100644
--- a/src/com/android/settings/sim/PreferredSimDialogFragment.java
+++ b/src/com/android/settings/sim/PreferredSimDialogFragment.java
@@ -100,7 +100,7 @@
         final SubscriptionInfo info = getPreferredSubscription();
         if (info == null || (info.isEmbedded()
             && (info.getProfileClass() == PROFILE_CLASS_PROVISIONING
-            || (Flags.oemEnabledSatelliteFlag() && info.isNtn())))) {
+                || (Flags.oemEnabledSatelliteFlag() && info.isOnlyNonTerrestrialNetwork())))) {
             dismiss();
             return;
         }
diff --git a/src/com/android/settings/sim/SelectSpecificDataSimDialogFragment.java b/src/com/android/settings/sim/SelectSpecificDataSimDialogFragment.java
index 218efc0..37f5445 100644
--- a/src/com/android/settings/sim/SelectSpecificDataSimDialogFragment.java
+++ b/src/com/android/settings/sim/SelectSpecificDataSimDialogFragment.java
@@ -136,10 +136,12 @@
 
         if ((newSubInfo.isEmbedded()
             && (newSubInfo.getProfileClass() == PROFILE_CLASS_PROVISIONING
-            || (Flags.oemEnabledSatelliteFlag() && newSubInfo.isNtn())))
+                || (Flags.oemEnabledSatelliteFlag()
+                    && newSubInfo.isOnlyNonTerrestrialNetwork())))
             || (currentDataSubInfo.isEmbedded()
             && (currentDataSubInfo.getProfileClass() == PROFILE_CLASS_PROVISIONING
-            || (Flags.oemEnabledSatelliteFlag() && currentDataSubInfo.isNtn())))) {
+                || (Flags.oemEnabledSatelliteFlag()
+                    && currentDataSubInfo.isOnlyNonTerrestrialNetwork())))) {
             Log.d(TAG, "do not set the provisioning or satellite eSIM");
             dismiss();
             return;
diff --git a/src/com/android/settings/sim/SimListDialogFragment.java b/src/com/android/settings/sim/SimListDialogFragment.java
index 4a478e9..db2c4dc 100644
--- a/src/com/android/settings/sim/SimListDialogFragment.java
+++ b/src/com/android/settings/sim/SimListDialogFragment.java
@@ -145,7 +145,7 @@
         // Remove the provisioning or satellite eSIM from the subscription list.
         currentSubscriptions.removeIf(info -> info.isEmbedded()
             && (info.getProfileClass() == PROFILE_CLASS_PROVISIONING
-            || (Flags.oemEnabledSatelliteFlag() && info.isNtn())));
+                || (Flags.oemEnabledSatelliteFlag() && info.isOnlyNonTerrestrialNetwork())));
 
         boolean includeAskEveryTime = getArguments().getBoolean(KEY_INCLUDE_ASK_EVERY_TIME);
         boolean isCancelItemShowed = getArguments().getBoolean(KEY_SHOW_CANCEL_ITEM);
