Merge "Hide the enabling mobile data" into main
diff --git a/src/com/android/settings/sim/PreferredSimDialogFragment.java b/src/com/android/settings/sim/PreferredSimDialogFragment.java
index 96c0eb6..aa42f3c 100644
--- a/src/com/android/settings/sim/PreferredSimDialogFragment.java
+++ b/src/com/android/settings/sim/PreferredSimDialogFragment.java
@@ -21,10 +21,12 @@
 import android.app.Activity;
 import android.app.Dialog;
 import android.app.settings.SettingsEnums;
+import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
 import android.util.Log;
 
 import androidx.annotation.NonNull;
@@ -91,8 +93,12 @@
         }
 
         if (dialog == null) {
-            Log.d(TAG, "Dialog is null.");
-            dismiss();
+            dismiss("Dialog is null.");
+            return;
+        }
+        Context context = getContext();
+        if (context == null) {
+            dismiss("getContext is null.");
             return;
         }
 
@@ -100,24 +106,44 @@
         if (info == null || (info.isEmbedded()
             && (info.getProfileClass() == PROFILE_CLASS_PROVISIONING
                 || (Flags.oemEnabledSatelliteFlag() && info.isOnlyNonTerrestrialNetwork())))) {
-            dismiss();
+            dismiss("SubscriptionInfo is null or other esim's cases.");
             return;
         }
         Log.d(TAG, "SubscriptionInfo: " + info);
+        TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+        if (telephonyManager == null) {
+            dismiss("TelephonyManager is null.");
+            return;
+        }
+        telephonyManager = telephonyManager.createForSubscriptionId(info.getSubscriptionId());
+        if (telephonyManager.isDataEnabledForReason(TelephonyManager.DATA_ENABLED_REASON_USER)) {
+            dismiss("mobile data is on.");
+            final SimDialogActivity activity = (SimDialogActivity) getActivity();
+            if (activity != null) {
+                activity.finish();
+            }
+            return;
+        }
+
         final CharSequence simName =
-                SubscriptionUtil.getUniqueSubscriptionDisplayName(info, getContext());
+                SubscriptionUtil.getUniqueSubscriptionDisplayName(info, context);
         final String title =
-                getContext().getString(
+                context.getString(
                         getTitleResId(),
                         simName);
         final String message =
-                getContext().getString(
+                context.getString(
                         R.string.sim_preferred_message,
                         simName);
         dialog.setTitle(title);
         dialog.setMessage(message);
     }
 
+    private void dismiss(String log) {
+        Log.d(TAG, log);
+        dismiss();
+    }
+
     @Override
     public void updateDialog() {
         updateDialog((AlertDialog) getDialog());