diff --git a/src/com/android/settings/sim/PreferredSimDialogFragment.java b/src/com/android/settings/sim/PreferredSimDialogFragment.java index 96c0eb61a75..aa42f3cb8f8 100644 --- a/src/com/android/settings/sim/PreferredSimDialogFragment.java +++ b/src/com/android/settings/sim/PreferredSimDialogFragment.java @@ -21,10 +21,12 @@ import static android.telephony.SubscriptionManager.PROFILE_CLASS_PROVISIONING; 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 @@ public class PreferredSimDialogFragment extends SimDialogFragment implements } 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 @@ public class PreferredSimDialogFragment extends SimDialogFragment implements 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());