diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index 2626400..a96ef4c 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -3155,7 +3155,7 @@
             }
 
             boolean isMVNOAPN = !TextUtils.isEmpty(ret.getString(numericIndex))
-                    && tm.isCurrentSimOperator(ret.getString(numericIndex),
+                    && tm.matchesCurrentSimOperator(ret.getString(numericIndex),
                             getMvnoTypeIntFromString(ret.getString(mvnoIndex)),
                             ret.getString(mvnoDataIndex));
             boolean isMNOAPN = !TextUtils.isEmpty(ret.getString(numericIndex))
@@ -4009,7 +4009,7 @@
                 String mvnoType = cursor.getString(0 /* MVNO_TYPE index */);
                 String mvnoMatchData = cursor.getString(1 /* MVNO_MATCH_DATA index */);
                 if (!TextUtils.isEmpty(mvnoType) && !TextUtils.isEmpty(mvnoMatchData)
-                        && telephonyManager.isCurrentSimOperator(simOperator,
+                        && telephonyManager.matchesCurrentSimOperator(simOperator,
                             getMvnoTypeIntFromString(mvnoType), mvnoMatchData)) {
                     where = NUMERIC + "='" + simOperator + "'"
                             + " AND " + MVNO_TYPE + "='" + mvnoType + "'"
diff --git a/tests/src/com/android/providers/telephony/TelephonyProviderTest.java b/tests/src/com/android/providers/telephony/TelephonyProviderTest.java
index 340e2af..61eeca5 100644
--- a/tests/src/com/android/providers/telephony/TelephonyProviderTest.java
+++ b/tests/src/com/android/providers/telephony/TelephonyProviderTest.java
@@ -1363,9 +1363,9 @@
         otherValues.put(Carriers.MVNO_TYPE, otherMvnoTyp);
         otherValues.put(Carriers.MVNO_MATCH_DATA, otherMvnoMatchData);
 
-        doReturn(true).when(telephonyManager).isCurrentSimOperator(
+        doReturn(true).when(telephonyManager).matchesCurrentSimOperator(
             anyString(), anyInt(), eq(TelephonyProviderTestable.TEST_SPN));
-        doReturn(false).when(telephonyManager).isCurrentSimOperator(
+        doReturn(false).when(telephonyManager).matchesCurrentSimOperator(
             anyString(), anyInt(), eq(otherMvnoMatchData));
 
         // insert APNs
@@ -1506,9 +1506,9 @@
 
         TelephonyManager telephonyManager =
             (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
-        doReturn(true).when(telephonyManager).isCurrentSimOperator(
+        doReturn(true).when(telephonyManager).matchesCurrentSimOperator(
             anyString(), anyInt(), eq(mvnoData));
-        doReturn(false).when(telephonyManager).isCurrentSimOperator(
+        doReturn(false).when(telephonyManager).matchesCurrentSimOperator(
             anyString(), anyInt(), eq(""));
 
         // Query DB
