diff --git a/java/com/android/dialer/dialpadview/SpecialCharSequenceMgr.java b/java/com/android/dialer/dialpadview/SpecialCharSequenceMgr.java
index 3321d93..d88bac3 100644
--- a/java/com/android/dialer/dialpadview/SpecialCharSequenceMgr.java
+++ b/java/com/android/dialer/dialpadview/SpecialCharSequenceMgr.java
@@ -59,14 +59,15 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
+import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.oem.MotorolaUtils;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.PermissionsUtil;
+import com.google.common.collect.ImmutableSet;
 import com.google.zxing.BarcodeFormat;
 import com.google.zxing.MultiFormatWriter;
 import com.google.zxing.WriterException;
 import com.google.zxing.common.BitMatrix;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
@@ -93,17 +94,8 @@
   private static final String ADN_NAME_COLUMN_NAME = "name";
   private static final int ADN_QUERY_TOKEN = -1;
 
-  @VisibleForTesting
-  static final List<String> TRANSSION_CODES =
-      new ArrayList<String>() {
-        {
-          add("*#07#");
-          add("*#87#");
-          add("*#43#");
-          add("*#2727#");
-          add("*#88#");
-        }
-      };
+  /** Comma separated MMI codes specific to OEM/device. */
+  @VisibleForTesting static final String CONFIG_OEM_MMI_CODES_CSV = "oem_mmi_codes_csv";
 
   /**
    * Remembers the previous {@link QueryHandler} and cancel the operation when needed, to prevent
@@ -172,7 +164,8 @@
       TelephonyManagerCompat.handleSecretCode(context, secretCode);
       return true;
     }
-    if (TRANSSION_CODES.contains(input)) {
+
+    if (getOemSecretCodes(context).contains(input)) {
       String secretCode = input.substring(2, input.length() - 1);
       TelephonyManagerCompat.handleSecretCode(context, secretCode);
       return true;
@@ -181,6 +174,18 @@
   }
 
   /**
+   * Get the OEM codes from the config provider. The config provider should be aware of the device
+   * and manufacturer.
+   */
+  private static ImmutableSet<String> getOemSecretCodes(Context context) {
+    String csv = ConfigProviderBindings.get(context).getString(CONFIG_OEM_MMI_CODES_CSV, null);
+    if (TextUtils.isEmpty(csv)) {
+      return ImmutableSet.of();
+    }
+    return ImmutableSet.copyOf(csv.split(","));
+  }
+
+  /**
    * Handle ADN requests by filling in the SIM contact number into the requested EditText.
    *
    * <p>This code works alongside the Asynchronous query handler {@link QueryHandler} and query
