diff --git a/src/com/android/contacts/SpecialCharSequenceMgr.java b/src/com/android/contacts/SpecialCharSequenceMgr.java
index 999e141..3f2c304 100644
--- a/src/com/android/contacts/SpecialCharSequenceMgr.java
+++ b/src/com/android/contacts/SpecialCharSequenceMgr.java
@@ -181,12 +181,19 @@
         if (input.equals(MMI_IMEI_DISPLAY)) {
             int networkType = ((TelephonyManager)context.getSystemService(
                     Context.TELEPHONY_SERVICE)).getNetworkType();
-            // check for GSM
-            if(networkType == TelephonyManager.NETWORK_TYPE_GPRS || 
-                    networkType == TelephonyManager.NETWORK_TYPE_EDGE || 
-                    networkType == TelephonyManager.NETWORK_TYPE_UMTS ) { 
 
-                showIMEIPanel(context, useSystemWindow); 
+            if (networkType == TelephonyManager.NETWORK_TYPE_GPRS ||
+                    networkType == TelephonyManager.NETWORK_TYPE_EDGE ||
+                    networkType == TelephonyManager.NETWORK_TYPE_UMTS) {
+
+                showIMEIPanel(context, useSystemWindow);
+                return true;
+            } else if (networkType == TelephonyManager.NETWORK_TYPE_CDMA ||
+                         networkType == TelephonyManager.NETWORK_TYPE_EVDO_0 ||
+                         networkType == TelephonyManager.NETWORK_TYPE_EVDO_A ||
+                         networkType == TelephonyManager.NETWORK_TYPE_1xRTT) {
+
+                showMEIDPanel(context, useSystemWindow);
                 return true;
             }
         }
@@ -207,6 +214,19 @@
         alert.getWindow().setType(WindowManager.LayoutParams.TYPE_PRIORITY_PHONE);
     }
 
+    static void showMEIDPanel(Context context, boolean useSystemWindow) {
+        String meidStr = ((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE))
+                .getDeviceId();
+
+        AlertDialog alert = new AlertDialog.Builder(context)
+                .setTitle(R.string.meid)
+                .setMessage(meidStr)
+                .setPositiveButton(android.R.string.ok, null)
+                .setCancelable(false)
+                .show();
+        alert.getWindow().setType(WindowManager.LayoutParams.TYPE_PRIORITY_PHONE);
+    }
+
     /*******
      * This code is used to handle SIM Contact queries
      *******/
