diff --git a/telephony/java/com/android/internal/telephony/Phone.java b/telephony/java/com/android/internal/telephony/Phone.java index 48c5318c2943a..4b02e8edfede5 100644 --- a/telephony/java/com/android/internal/telephony/Phone.java +++ b/telephony/java/com/android/internal/telephony/Phone.java @@ -1429,6 +1429,11 @@ public interface Phone { */ String getMeid(); + /** + * Retrieves IMEI for phones. Returns null if IMEI is not set. + */ + String getImei(); + /** * Retrieves the PhoneSubInfo of the Phone */ diff --git a/telephony/java/com/android/internal/telephony/PhoneProxy.java b/telephony/java/com/android/internal/telephony/PhoneProxy.java index c2212dbae1af3..b5bfc76fd8eb9 100644 --- a/telephony/java/com/android/internal/telephony/PhoneProxy.java +++ b/telephony/java/com/android/internal/telephony/PhoneProxy.java @@ -685,6 +685,10 @@ public class PhoneProxy extends Handler implements Phone { return mActivePhone.getMeid(); } + public String getImei() { + return mActivePhone.getImei(); + } + public PhoneSubInfo getPhoneSubInfo(){ return mActivePhone.getPhoneSubInfo(); } diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java index a31b7041696c2..0d9d27d138e37 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java +++ b/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java @@ -135,6 +135,11 @@ public class CDMALTEPhone extends CDMAPhone { return mIccRecords.getIMSI(); } + @Override + public String getImei() { + return mImei; + } + @Override protected void log(String s) { if (DBG) diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java index 7f6bb453f9c90..63b7dac06cd15 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java +++ b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java @@ -122,6 +122,8 @@ public class CDMAPhone extends PhoneBase { //keep track of if phone is in emergency callback mode private boolean mIsPhoneInEcmState; private Registrant mEcmExitRespRegistrant; + protected String mImei; + protected String mImeiSv; private String mEsn; private String mMeid; // string to define how the carrier specifies its own ota sp number @@ -489,6 +491,11 @@ public class CDMAPhone extends PhoneBase { return mSST.getImsi(); } + public String getImei() { + Log.e(LOG_TAG, "IMEI is not available in CDMA"); + return null; + } + public boolean canConference() { Log.e(LOG_TAG, "canConference: not possible in CDMA"); return false; @@ -987,6 +994,8 @@ public class CDMAPhone extends PhoneBase { break; } String[] respId = (String[])ar.result; + mImei = respId[0]; + mImeiSv = respId[1]; mEsn = respId[2]; mMeid = respId[3]; } diff --git a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java index 275c8fe437f12..d1758f226d136 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java +++ b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java @@ -855,6 +855,10 @@ public class GSMPhone extends PhoneBase { return mImeiSv; } + public String getImei() { + return mImei; + } + public String getEsn() { Log.e(LOG_TAG, "[GSMPhone] getEsn() is a CDMA method"); return "0"; diff --git a/telephony/java/com/android/internal/telephony/sip/SipPhoneBase.java b/telephony/java/com/android/internal/telephony/sip/SipPhoneBase.java index 9dfc0158a26a5..5c4b446a78cf6 100755 --- a/telephony/java/com/android/internal/telephony/sip/SipPhoneBase.java +++ b/telephony/java/com/android/internal/telephony/sip/SipPhoneBase.java @@ -264,6 +264,10 @@ abstract class SipPhoneBase extends PhoneBase { return null; } + public String getImei() { + return null; + } + public String getEsn() { Log.e(LOG_TAG, "[SipPhone] getEsn() is a CDMA method"); return "0";