diff --git a/src/com/android/settings/sim/SimSelectNotification.java b/src/com/android/settings/sim/SimSelectNotification.java
index a303e42..fb83a4d 100644
--- a/src/com/android/settings/sim/SimSelectNotification.java
+++ b/src/com/android/settings/sim/SimSelectNotification.java
@@ -40,12 +40,14 @@
 import android.content.Intent;
 import android.content.res.Resources;
 import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.R;
+import com.android.settings.network.SubscriptionUtil;
 import com.android.settings.network.telephony.MobileNetworkActivity;
 import com.android.settingslib.HelpUtils;
 
@@ -104,6 +106,11 @@
             Log.w(TAG, "onEnableMmsDataRequest invalid sub ID " + subId);
             return;
         }
+        final SubscriptionInfo info = subscriptionManager.getActiveSubscriptionInfo(subId);
+        if (info == null) {
+            Log.w(TAG, "onEnableMmsDataRequest null SubscriptionInfo for sub ID " + subId);
+            return;
+        }
 
         // Getting request reason from extra, which will determine the notification title.
         CharSequence notificationTitle = null;
@@ -128,7 +135,7 @@
         }
 
         CharSequence notificationSummary = context.getResources().getString(
-                R.string.enable_mms_notification_summary, tm.getSimOperatorName());
+                R.string.enable_mms_notification_summary, SubscriptionUtil.getDisplayName(info));
 
         cancelEnableMmsNotification(context);
 
diff --git a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
index 5a2dd48..9b53636 100644
--- a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
+++ b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
@@ -49,6 +49,7 @@
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 
@@ -80,8 +81,10 @@
     private PackageManager mPackageManager;
     @Mock
     private Resources mResources;
+    @Mock
+    private SubscriptionInfo mSubInfo;
 
-    private final String mFakeOperatorName = "fake_operator_name";
+    private final String mFakeDisplayName = "fake_display_name";
     private final CharSequence mFakeNotificationChannelTitle = "fake_notification_channel_title";
     private final CharSequence mFakeNotificationTitle = "fake_notification_title";
     private final String mFakeNotificationSummary = "fake_notification_Summary";
@@ -113,9 +116,10 @@
                 .thenReturn(PackageManager.PERMISSION_GRANTED);
 
         when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
-        when(mTelephonyManager.getSimOperatorName()).thenReturn(mFakeOperatorName);
         when(mTelephonyManager.isDataEnabledForApn(TYPE_MMS)).thenReturn(false);
         when(mSubscriptionManager.isActiveSubId(mSubId)).thenReturn(true);
+        when(mSubscriptionManager.getActiveSubscriptionInfo(mSubId)).thenReturn(mSubInfo);
+        when(mSubInfo.getDisplayName()).thenReturn(mFakeDisplayName);
         when(mContext.getResources()).thenReturn(mResources);
 
         when(mResources.getText(R.string.enable_sending_mms_notification_title))
@@ -123,7 +127,7 @@
         when(mResources.getText(R.string.enable_mms_notification_channel_title))
                 .thenReturn(mFakeNotificationChannelTitle);
         when(mResources.getString(R.string.enable_mms_notification_summary,
-                mFakeOperatorName)).thenReturn(mFakeNotificationSummary);
+                mFakeDisplayName)).thenReturn(mFakeNotificationSummary);
 
         when(mResources.getText(R.string.dual_cdma_sim_warning_notification_channel_title))
                 .thenReturn(mFakeDualCdmaWarningChannelTitle);
