Dialer: Display 14 digit IMEI(Ignore Check Digit)
Show 14 digit IMEI instead of 15 digit based on the
config (ignore check digit)
Change-Id: I626d8e4c8b6bfae5ec75a303c1582d0b4ed107eb
CRs-Fixed: 808534
diff --git a/src/com/android/dialer/SpecialCharSequenceMgr.java b/src/com/android/dialer/SpecialCharSequenceMgr.java
index 63b5588..55f3fd7 100644
--- a/src/com/android/dialer/SpecialCharSequenceMgr.java
+++ b/src/com/android/dialer/SpecialCharSequenceMgr.java
@@ -32,7 +32,9 @@
import android.provider.Settings;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
+import android.telephony.CarrierConfigManager;
import android.telephony.PhoneNumberUtils;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
@@ -76,6 +78,7 @@
private static final String PRL_VERSION_DISPLAY = "*#0000#";
+ private static final int IMEI_14_DIGIT = 14;
/**
* Remembers the previous {@link QueryHandler} and cancel the operation when needed, to
* prevent possible crash.
@@ -353,6 +356,26 @@
"getDeviceId", Integer.TYPE)) {
for (int slot = 0; slot < telephonyManager.getPhoneCount(); slot++) {
String deviceId = telephonyManager.getDeviceId(slot);
+ boolean enable14DigitImei = false;
+ try {
+ CarrierConfigManager configManager =
+ (CarrierConfigManager) context.getSystemService(
+ Context.CARRIER_CONFIG_SERVICE);
+ int[] subIds = SubscriptionManager.getSubId(slot);
+ if (configManager != null &&
+ configManager.getConfigForSubId(subIds[0]) != null) {
+ enable14DigitImei =
+ configManager.getConfigForSubId(subIds[0]).getBoolean(
+ "config_enable_display_14digit_imei");
+ }
+ } catch(RuntimeException ex) {
+ //do Nothing
+ Log.e(TAG, "Config for 14 digit IMEI not found: " + ex);
+ }
+ if (enable14DigitImei && !TextUtils.isEmpty(deviceId)
+ && deviceId.length() > IMEI_14_DIGIT) {
+ deviceId = deviceId.substring(0, IMEI_14_DIGIT);
+ }
if (!TextUtils.isEmpty(deviceId)) {
deviceIds.add(deviceId);
}