From f301dab4711cef811bbfb032b84aa2daa6bc1c3c Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Wed, 15 Mar 2017 17:14:01 -0700 Subject: [PATCH] Deprecated getDeviceId and added getMeid and getImei Added two new public APIs getMeid and getImei. Deprecated the exisintg getDeviceId API because it can't return a constant id when phone type changes. Test: CTS and manual bug: 34233620, 10831289 Merged-In: Iad4c05d2fd2efc538214f466861497c973882dfe Change-Id: Iad4c05d2fd2efc538214f466861497c973882dfe --- api/current.txt | 8 ++- api/system-current.txt | 6 +- api/test-current.txt | 8 ++- .../android/telephony/TelephonyManager.java | 68 ++++++++++++++++--- .../internal/telephony/ITelephony.aidl | 10 +++ 5 files changed, 83 insertions(+), 17 deletions(-) diff --git a/api/current.txt b/api/current.txt index 625442cf8db9d..b6264f8fe92fe 100644 --- a/api/current.txt +++ b/api/current.txt @@ -38200,13 +38200,17 @@ package android.telephony { method public boolean getDataEnabled(); method public int getDataNetworkType(); method public int getDataState(); - method public java.lang.String getDeviceId(); - method public java.lang.String getDeviceId(int); + method public deprecated java.lang.String getDeviceId(); + method public deprecated java.lang.String getDeviceId(int); method public java.lang.String getDeviceSoftwareVersion(); method public java.lang.String[] getForbiddenPlmns(); method public java.lang.String getGroupIdLevel1(); method public java.lang.String getIccAuthentication(int, int, java.lang.String); + method public java.lang.String getImei(); + method public java.lang.String getImei(int); method public java.lang.String getLine1Number(); + method public java.lang.String getMeid(); + method public java.lang.String getMeid(int); method public java.lang.String getMmsUAProfUrl(); method public java.lang.String getMmsUserAgent(); method public deprecated java.util.List getNeighboringCellInfo(); diff --git a/api/system-current.txt b/api/system-current.txt index 32e3253a0fb02..fb963e84bf702 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -41418,8 +41418,8 @@ package android.telephony { method public boolean getDataEnabled(int); method public int getDataNetworkType(); method public int getDataState(); - method public java.lang.String getDeviceId(); - method public java.lang.String getDeviceId(int); + method public deprecated java.lang.String getDeviceId(); + method public deprecated java.lang.String getDeviceId(int); method public java.lang.String getDeviceSoftwareVersion(); method public java.lang.String[] getForbiddenPlmns(); method public java.lang.String getGroupIdLevel1(); @@ -41427,6 +41427,8 @@ package android.telephony { method public java.lang.String getImei(); method public java.lang.String getImei(int); method public java.lang.String getLine1Number(); + method public java.lang.String getMeid(); + method public java.lang.String getMeid(int); method public java.lang.String getMmsUAProfUrl(); method public java.lang.String getMmsUserAgent(); method public deprecated java.util.List getNeighboringCellInfo(); diff --git a/api/test-current.txt b/api/test-current.txt index 304901af62e8f..8563070457939 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -38282,13 +38282,17 @@ package android.telephony { method public boolean getDataEnabled(); method public int getDataNetworkType(); method public int getDataState(); - method public java.lang.String getDeviceId(); - method public java.lang.String getDeviceId(int); + method public deprecated java.lang.String getDeviceId(); + method public deprecated java.lang.String getDeviceId(int); method public java.lang.String getDeviceSoftwareVersion(); method public java.lang.String[] getForbiddenPlmns(); method public java.lang.String getGroupIdLevel1(); method public java.lang.String getIccAuthentication(int, int, java.lang.String); + method public java.lang.String getImei(); + method public java.lang.String getImei(int); method public java.lang.String getLine1Number(); + method public java.lang.String getMeid(); + method public java.lang.String getMeid(int); method public java.lang.String getMmsUAProfUrl(); method public java.lang.String getMmsUserAgent(); method public deprecated java.util.List getNeighboringCellInfo(); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 85e789c696adf..a61496dbdbdb4 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -46,6 +46,7 @@ import android.util.Log; import com.android.ims.internal.IImsServiceController; import com.android.ims.internal.IImsServiceFeatureListener; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telecom.ITelecomService; import com.android.internal.telephony.CellNetworkScanResult; import com.android.internal.telephony.IPhoneSubInfo; @@ -885,7 +886,11 @@ public class TelephonyManager { * *

Requires Permission: * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} + * + * @deprecated Use (@link getImei} which returns IMEI for GSM or (@link getMeid} which returns + * MEID for CDMA. */ + @Deprecated public String getDeviceId() { try { ITelephony telephony = getITelephony(); @@ -907,7 +912,11 @@ public class TelephonyManager { * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * * @param slotIndex of which deviceID is returned + * + * @deprecated Use (@link getImei} which returns IMEI for GSM or (@link getMeid} which returns + * MEID for CDMA. */ + @Deprecated public String getDeviceId(int slotIndex) { // FIXME this assumes phoneId == slotIndex try { @@ -923,29 +932,25 @@ public class TelephonyManager { } /** - * Returns the IMEI. Return null if IMEI is not available. + * Returns the IMEI (International Mobile Equipment Identity). Return null if IMEI is not + * available. * *

Requires Permission: * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} - * - * @hide */ - @SystemApi public String getImei() { return getImei(getDefaultSim()); } /** - * Returns the IMEI. Return null if IMEI is not available. + * Returns the IMEI (International Mobile Equipment Identity). Return null if IMEI is not + * available. * *

Requires Permission: * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * - * @param slotIndex of which deviceID is returned - * - * @hide + * @param slotIndex of which IMEI is returned */ - @SystemApi public String getImei(int slotIndex) { ITelephony telephony = getITelephony(); if (telephony == null) return null; @@ -959,6 +964,37 @@ public class TelephonyManager { } } + /** + * Returns the MEID (Mobile Equipment Identifier). Return null if MEID is not available. + * + *

Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} + */ + public String getMeid() { + return getMeid(getDefaultSim()); + } + + /** + * Returns the MEID (Mobile Equipment Identifier). Return null if MEID is not available. + * + *

Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} + * + * @param slotIndex of which MEID is returned + */ + public String getMeid(int slotIndex) { + ITelephony telephony = getITelephony(); + if (telephony == null) return null; + + try { + return telephony.getMeidForSlot(slotIndex, getOpPackageName()); + } catch (RemoteException ex) { + return null; + } catch (NullPointerException ex) { + return null; + } + } + /** * Returns the NAI. Return null if NAI is not available. * @@ -3886,9 +3922,19 @@ public class TelephonyManager { return SubscriptionManager.getPhoneId(SubscriptionManager.getDefaultSubscriptionId()); } - /** {@hide} */ + /** + * @return default SIM's slot index. If SIM is not inserted, return default SIM slot index. + * + * {@hide} + */ + @VisibleForTesting public int getDefaultSim() { - return SubscriptionManager.getSlotIndex(SubscriptionManager.getDefaultSubscriptionId()); + int slotIndex = SubscriptionManager.getSlotIndex( + SubscriptionManager.getDefaultSubscriptionId()); + if (slotIndex == SubscriptionManager.SIM_NOT_INSERTED) { + slotIndex = SubscriptionManager.DEFAULT_SIM_SLOT_INDEX; + } + return slotIndex; } /** diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 3a99cb98b97b5..5c3782287e1cb 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1061,6 +1061,16 @@ interface ITelephony { */ String getImeiForSlot(int slotIndex, String callingPackage); + /** + * Returns the MEID for the given slot. + * + * @param slotIndex - device slot. + * @param callingPackage The package making the call. + *

Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} + */ + String getMeidForSlot(int slotIndex, String callingPackage); + /** * Returns the device software version. *