Loading src/java/com/android/internal/telephony/PhoneSubInfo.java +60 −22 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.internal.telephony; import java.io.FileDescriptor; import java.io.PrintWriter; import android.app.AppOpsManager; import android.content.Context; import android.content.pm.PackageManager; import android.os.Binder; Loading @@ -36,6 +37,7 @@ public class PhoneSubInfo { private Phone mPhone; private Context mContext; private AppOpsManager mAppOps; private static final String READ_PHONE_STATE = android.Manifest.permission.READ_PHONE_STATE; // TODO: change getCompleteVoiceMailNumber() to require READ_PRIVILEGED_PHONE_STATE Loading @@ -47,6 +49,7 @@ public class PhoneSubInfo { public PhoneSubInfo(Phone phone) { mPhone = phone; mContext = phone.getContext(); mAppOps = mContext.getSystemService(AppOpsManager.class); } public void dispose() { Loading @@ -65,24 +68,30 @@ public class PhoneSubInfo { /** * Retrieves the unique device ID, e.g., IMEI for GSM phones and MEID for CDMA phones. */ public String getDeviceId() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getDeviceId(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getDeviceId(); } /** * Retrieves the IMEI. */ public String getImei() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getImei(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getImei(); } /** * Retrieves the NAI. */ public String getNai() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getNai(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getNai(); } Loading @@ -90,64 +99,82 @@ public class PhoneSubInfo { * Retrieves the software version number for the device, e.g., IMEI/SV * for GSM phones. */ public String getDeviceSvn() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getDeviceSvn(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getDeviceSvn(); } /** * Retrieves the unique subscriber ID, e.g., IMSI for GSM phones. */ public String getSubscriberId() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getSubscriberId(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getSubscriberId(); } /** * Retrieves the Group Identifier Level1 for GSM phones. */ public String getGroupIdLevel1() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getGroupIdLevel1(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getGroupIdLevel1(); } /** * Retrieves the serial number of the ICC, if applicable. */ public String getIccSerialNumber() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getIccSerialNumber(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getIccSerialNumber(); } /** * Retrieves the phone number string for line 1. */ public String getLine1Number() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getLine1Number(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getLine1Number(); } /** * Retrieves the alpha identifier for line 1. */ public String getLine1AlphaTag() { public String getLine1AlphaTag(String callingPackage) { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getLine1AlphaTag(); } /** * Retrieves the MSISDN string. */ public String getMsisdn() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getMsisdn(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getMsisdn(); } /** * Retrieves the voice mail number. */ public String getVoiceMailNumber() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getVoiceMailNumber(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } String number = PhoneNumberUtils.extractNetworkPortion(mPhone.getVoiceMailNumber()); if (VDBG) log("VM: PhoneSubInfo.getVoiceMailNUmber: " + number); return number; Loading @@ -169,7 +196,10 @@ public class PhoneSubInfo { /** * Retrieves the alpha identifier associated with the voice mail number. */ public String getVoiceMailAlphaTag() { public String getVoiceMailAlphaTag(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); return mPhone.getVoiceMailAlphaTag(); } Loading Loading @@ -336,4 +366,12 @@ public class PhoneSubInfo { pw.println(" Phone Type = " + mPhone.getPhoneName()); pw.println(" Device ID = " + mPhone.getDeviceId()); } private boolean checkReadPhoneState(String callingPackage, String message) { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.READ_PHONE_STATE, message); return mAppOps.noteOp(AppOpsManager.OP_READ_PHONE_STATE, Binder.getCallingUid(), callingPackage) == AppOpsManager.MODE_ALLOWED; } } src/java/com/android/internal/telephony/PhoneSubInfoController.java +41 −47 Original line number Diff line number Diff line Loading @@ -25,11 +25,6 @@ import android.telephony.Rlog; import android.telephony.TelephonyManager; import java.lang.NullPointerException; import java.lang.ArrayIndexOutOfBoundsException; import com.android.internal.telephony.IPhoneSubInfo; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneSubInfoProxy; public class PhoneSubInfoController extends IPhoneSubInfo.Stub { private static final String TAG = "PhoneSubInfoController"; Loading @@ -42,8 +37,7 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getDeviceId() { public String getDeviceId(String callingPackage) { return getDeviceIdForPhone(SubscriptionManager.getPhoneId(getDefaultSubscription())); } Loading @@ -57,10 +51,10 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getNaiForSubscriber(int subId) { public String getNaiForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getNai(); return phoneSubInfoProxy.getNai(callingPackage); } else { Rlog.e(TAG,"getNai phoneSubInfoProxy is null" + " for Subscription:" + subId); Loading @@ -68,10 +62,10 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getImeiForSubscriber(int subId) { public String getImeiForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getImei(); return phoneSubInfoProxy.getImei(callingPackage); } else { Rlog.e(TAG,"getDeviceId phoneSubInfoProxy is null" + " for Subscription:" + subId); Loading @@ -79,28 +73,28 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getDeviceSvn() { return getDeviceSvnUsingSubId(getDefaultSubscription()); public String getDeviceSvn(String callingPackage) { return getDeviceSvnUsingSubId(getDefaultSubscription(), callingPackage); } public String getDeviceSvnUsingSubId(int subId) { public String getDeviceSvnUsingSubId(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getDeviceSvn(); return phoneSubInfoProxy.getDeviceSvn(callingPackage); } else { Rlog.e(TAG,"getDeviceSvn phoneSubInfoProxy is null"); return null; } } public String getSubscriberId() { return getSubscriberIdForSubscriber(getDefaultSubscription()); public String getSubscriberId(String callingPackage) { return getSubscriberIdForSubscriber(getDefaultSubscription(), callingPackage); } public String getSubscriberIdForSubscriber(int subId) { public String getSubscriberIdForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getSubscriberId(); return phoneSubInfoProxy.getSubscriberId(callingPackage); } else { Rlog.e(TAG,"getSubscriberId phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading @@ -111,14 +105,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { /** * Retrieves the serial number of the ICC, if applicable. */ public String getIccSerialNumber() { return getIccSerialNumberForSubscriber(getDefaultSubscription()); public String getIccSerialNumber(String callingPackage) { return getIccSerialNumberForSubscriber(getDefaultSubscription(), callingPackage); } public String getIccSerialNumberForSubscriber(int subId) { public String getIccSerialNumberForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getIccSerialNumber(); return phoneSubInfoProxy.getIccSerialNumber(callingPackage); } else { Rlog.e(TAG,"getIccSerialNumber phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading @@ -126,14 +120,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getLine1Number() { return getLine1NumberForSubscriber(getDefaultSubscription()); public String getLine1Number(String callingPackage) { return getLine1NumberForSubscriber(getDefaultSubscription(), callingPackage); } public String getLine1NumberForSubscriber(int subId) { public String getLine1NumberForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getLine1Number(); return phoneSubInfoProxy.getLine1Number(callingPackage); } else { Rlog.e(TAG,"getLine1Number phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading @@ -141,14 +135,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getLine1AlphaTag() { return getLine1AlphaTagForSubscriber(getDefaultSubscription()); public String getLine1AlphaTag(String callingPackage) { return getLine1AlphaTagForSubscriber(getDefaultSubscription(), callingPackage); } public String getLine1AlphaTagForSubscriber(int subId) { public String getLine1AlphaTagForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getLine1AlphaTag(); return phoneSubInfoProxy.getLine1AlphaTag(callingPackage); } else { Rlog.e(TAG,"getLine1AlphaTag phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading @@ -156,14 +150,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getMsisdn() { return getMsisdnForSubscriber(getDefaultSubscription()); public String getMsisdn(String callingPackage) { return getMsisdnForSubscriber(getDefaultSubscription(), callingPackage); } public String getMsisdnForSubscriber(int subId) { public String getMsisdnForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getMsisdn(); return phoneSubInfoProxy.getMsisdn(callingPackage); } else { Rlog.e(TAG,"getMsisdn phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading @@ -171,14 +165,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getVoiceMailNumber() { return getVoiceMailNumberForSubscriber(getDefaultSubscription()); public String getVoiceMailNumber(String callingPackage) { return getVoiceMailNumberForSubscriber(getDefaultSubscription(), callingPackage); } public String getVoiceMailNumberForSubscriber(int subId) { public String getVoiceMailNumberForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getVoiceMailNumber(); return phoneSubInfoProxy.getVoiceMailNumber(callingPackage); } else { Rlog.e(TAG,"getVoiceMailNumber phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading @@ -201,14 +195,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getVoiceMailAlphaTag() { return getVoiceMailAlphaTagForSubscriber(getDefaultSubscription()); public String getVoiceMailAlphaTag(String callingPackage) { return getVoiceMailAlphaTagForSubscriber(getDefaultSubscription(), callingPackage); } public String getVoiceMailAlphaTagForSubscriber(int subId) { public String getVoiceMailAlphaTagForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getVoiceMailAlphaTag(); return phoneSubInfoProxy.getVoiceMailAlphaTag(callingPackage); } else { Rlog.e(TAG,"getVoiceMailAlphaTag phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading Loading @@ -280,14 +274,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { return phoneSubInfoProxy.getIccSimChallengeResponse(subId, appType, data); } public String getGroupIdLevel1() { return getGroupIdLevel1ForSubscriber(getDefaultSubscription()); public String getGroupIdLevel1(String callingPackage) { return getGroupIdLevel1ForSubscriber(getDefaultSubscription(), callingPackage); } public String getGroupIdLevel1ForSubscriber(int subId) { public String getGroupIdLevel1ForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getGroupIdLevel1(); return phoneSubInfoProxy.getGroupIdLevel1(callingPackage); } else { Rlog.e(TAG,"getGroupIdLevel1 phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading src/java/com/android/internal/telephony/PhoneSubInfoProxy.java +39 −36 Original line number Diff line number Diff line Loading @@ -35,76 +35,76 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub { } @Override public String getDeviceId() { return mPhoneSubInfo.getDeviceId(); public String getDeviceId(String callingPackage) { return mPhoneSubInfo.getDeviceId(callingPackage); } public String getImei() { return mPhoneSubInfo.getImei(); public String getImei(String callingPackage) { return mPhoneSubInfo.getImei(callingPackage); } public String getNai() { return mPhoneSubInfo.getNai(); public String getNai(String callingPackage) { return mPhoneSubInfo.getNai(callingPackage); } @Override public String getDeviceSvn() { return mPhoneSubInfo.getDeviceSvn(); public String getDeviceSvn(String callingPackage) { return mPhoneSubInfo.getDeviceSvn(callingPackage); } /** * Retrieves the unique subscriber ID, e.g., IMSI for GSM phones. */ @Override public String getSubscriberId() { return mPhoneSubInfo.getSubscriberId(); public String getSubscriberId(String callingPackage) { return mPhoneSubInfo.getSubscriberId(callingPackage); } /** * Retrieves the Group Identifier Level1 for GSM phones. */ public String getGroupIdLevel1() { return mPhoneSubInfo.getGroupIdLevel1(); public String getGroupIdLevel1(String callingPackage) { return mPhoneSubInfo.getGroupIdLevel1(callingPackage); } /** * Retrieves the serial number of the ICC, if applicable. */ @Override public String getIccSerialNumber() { return mPhoneSubInfo.getIccSerialNumber(); public String getIccSerialNumber(String callingPackage) { return mPhoneSubInfo.getIccSerialNumber(callingPackage); } /** * Retrieves the phone number string for line 1. */ @Override public String getLine1Number() { return mPhoneSubInfo.getLine1Number(); public String getLine1Number(String callingPackage) { return mPhoneSubInfo.getLine1Number(callingPackage); } /** * Retrieves the alpha identifier for line 1. */ @Override public String getLine1AlphaTag() { return mPhoneSubInfo.getLine1AlphaTag(); public String getLine1AlphaTag(String callingPackage) { return mPhoneSubInfo.getLine1AlphaTag(callingPackage); } /** * Retrieves the MSISDN Number. */ @Override public String getMsisdn() { return mPhoneSubInfo.getMsisdn(); public String getMsisdn(String callingPackage) { return mPhoneSubInfo.getMsisdn(callingPackage); } /** * Retrieves the voice mail number. */ @Override public String getVoiceMailNumber() { return mPhoneSubInfo.getVoiceMailNumber(); public String getVoiceMailNumber(String callingPackage) { return mPhoneSubInfo.getVoiceMailNumber(callingPackage); } /** Loading @@ -119,8 +119,8 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub { * Retrieves the alpha identifier associated with the voice mail number. */ @Override public String getVoiceMailAlphaTag() { return mPhoneSubInfo.getVoiceMailAlphaTag(); public String getVoiceMailAlphaTag(String callingPackage) { return mPhoneSubInfo.getVoiceMailAlphaTag(callingPackage); } /** Loading Loading @@ -158,61 +158,64 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub { } @Override public String getImeiForSubscriber(int subId) throws RemoteException { public String getImeiForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getImeiForSubscriber return null; } @Override public String getDeviceSvnUsingSubId(int subId) throws RemoteException { public String getDeviceSvnUsingSubId(int subId, String callingPackage) throws RemoteException { // FIXME: getDeviceSvnUsingSubId return null; } @Override public String getNaiForSubscriber(int subId) throws RemoteException { public String getNaiForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: NaiForSubscriber return null; } @Override public String getSubscriberIdForSubscriber(int subId) throws RemoteException { public String getSubscriberIdForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getSubscriberIdForSubscriber return null; } @Override public String getGroupIdLevel1ForSubscriber(int subId) throws RemoteException { public String getGroupIdLevel1ForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getGroupIdLevel1ForSubscriber return null; } @Override public String getIccSerialNumberForSubscriber(int subId) throws RemoteException { public String getIccSerialNumberForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getIccSerialNumberForSubscriber return null; } @Override public String getLine1NumberForSubscriber(int subId) throws RemoteException { public String getLine1NumberForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getLine1NumberForSubscriber return null; } @Override public String getLine1AlphaTagForSubscriber(int subId) throws RemoteException { public String getLine1AlphaTagForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getLine1AlphaTagForSubscriber return null; } @Override public String getMsisdnForSubscriber(int subId) throws RemoteException { public String getMsisdnForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getMsisdnForSubscriber return null; } @Override public String getVoiceMailNumberForSubscriber(int subId) throws RemoteException { public String getVoiceMailNumberForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getVoiceMailNumberForSubscriber return null; } Loading @@ -224,7 +227,7 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub { } @Override public String getVoiceMailAlphaTagForSubscriber(int subId) throws RemoteException { public String getVoiceMailAlphaTagForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getVoiceMailAlphaTagForSubscriber return null; } Loading Loading @@ -253,7 +256,7 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub { * Returns null if the Authentification hasn't been successed or isn't present iphonesubinfo. * @return the response of ISIM Authetification, or null if not available * @deprecated * @see getIccSimChallengeResponse * @see #getIccSimChallengeResponse */ public String getIsimChallengeResponse(String nonce) { return mPhoneSubInfo.getIsimChallengeResponse(nonce); Loading Loading
src/java/com/android/internal/telephony/PhoneSubInfo.java +60 −22 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.internal.telephony; import java.io.FileDescriptor; import java.io.PrintWriter; import android.app.AppOpsManager; import android.content.Context; import android.content.pm.PackageManager; import android.os.Binder; Loading @@ -36,6 +37,7 @@ public class PhoneSubInfo { private Phone mPhone; private Context mContext; private AppOpsManager mAppOps; private static final String READ_PHONE_STATE = android.Manifest.permission.READ_PHONE_STATE; // TODO: change getCompleteVoiceMailNumber() to require READ_PRIVILEGED_PHONE_STATE Loading @@ -47,6 +49,7 @@ public class PhoneSubInfo { public PhoneSubInfo(Phone phone) { mPhone = phone; mContext = phone.getContext(); mAppOps = mContext.getSystemService(AppOpsManager.class); } public void dispose() { Loading @@ -65,24 +68,30 @@ public class PhoneSubInfo { /** * Retrieves the unique device ID, e.g., IMEI for GSM phones and MEID for CDMA phones. */ public String getDeviceId() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getDeviceId(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getDeviceId(); } /** * Retrieves the IMEI. */ public String getImei() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getImei(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getImei(); } /** * Retrieves the NAI. */ public String getNai() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getNai(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getNai(); } Loading @@ -90,64 +99,82 @@ public class PhoneSubInfo { * Retrieves the software version number for the device, e.g., IMEI/SV * for GSM phones. */ public String getDeviceSvn() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getDeviceSvn(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getDeviceSvn(); } /** * Retrieves the unique subscriber ID, e.g., IMSI for GSM phones. */ public String getSubscriberId() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getSubscriberId(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getSubscriberId(); } /** * Retrieves the Group Identifier Level1 for GSM phones. */ public String getGroupIdLevel1() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getGroupIdLevel1(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getGroupIdLevel1(); } /** * Retrieves the serial number of the ICC, if applicable. */ public String getIccSerialNumber() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getIccSerialNumber(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getIccSerialNumber(); } /** * Retrieves the phone number string for line 1. */ public String getLine1Number() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getLine1Number(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getLine1Number(); } /** * Retrieves the alpha identifier for line 1. */ public String getLine1AlphaTag() { public String getLine1AlphaTag(String callingPackage) { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getLine1AlphaTag(); } /** * Retrieves the MSISDN string. */ public String getMsisdn() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getMsisdn(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } return mPhone.getMsisdn(); } /** * Retrieves the voice mail number. */ public String getVoiceMailNumber() { mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); public String getVoiceMailNumber(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } String number = PhoneNumberUtils.extractNetworkPortion(mPhone.getVoiceMailNumber()); if (VDBG) log("VM: PhoneSubInfo.getVoiceMailNUmber: " + number); return number; Loading @@ -169,7 +196,10 @@ public class PhoneSubInfo { /** * Retrieves the alpha identifier associated with the voice mail number. */ public String getVoiceMailAlphaTag() { public String getVoiceMailAlphaTag(String callingPackage) { if (!checkReadPhoneState(callingPackage, "Requires READ_PHONE_STATE")) { return null; } mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE"); return mPhone.getVoiceMailAlphaTag(); } Loading Loading @@ -336,4 +366,12 @@ public class PhoneSubInfo { pw.println(" Phone Type = " + mPhone.getPhoneName()); pw.println(" Device ID = " + mPhone.getDeviceId()); } private boolean checkReadPhoneState(String callingPackage, String message) { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.READ_PHONE_STATE, message); return mAppOps.noteOp(AppOpsManager.OP_READ_PHONE_STATE, Binder.getCallingUid(), callingPackage) == AppOpsManager.MODE_ALLOWED; } }
src/java/com/android/internal/telephony/PhoneSubInfoController.java +41 −47 Original line number Diff line number Diff line Loading @@ -25,11 +25,6 @@ import android.telephony.Rlog; import android.telephony.TelephonyManager; import java.lang.NullPointerException; import java.lang.ArrayIndexOutOfBoundsException; import com.android.internal.telephony.IPhoneSubInfo; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneSubInfoProxy; public class PhoneSubInfoController extends IPhoneSubInfo.Stub { private static final String TAG = "PhoneSubInfoController"; Loading @@ -42,8 +37,7 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getDeviceId() { public String getDeviceId(String callingPackage) { return getDeviceIdForPhone(SubscriptionManager.getPhoneId(getDefaultSubscription())); } Loading @@ -57,10 +51,10 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getNaiForSubscriber(int subId) { public String getNaiForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getNai(); return phoneSubInfoProxy.getNai(callingPackage); } else { Rlog.e(TAG,"getNai phoneSubInfoProxy is null" + " for Subscription:" + subId); Loading @@ -68,10 +62,10 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getImeiForSubscriber(int subId) { public String getImeiForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getImei(); return phoneSubInfoProxy.getImei(callingPackage); } else { Rlog.e(TAG,"getDeviceId phoneSubInfoProxy is null" + " for Subscription:" + subId); Loading @@ -79,28 +73,28 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getDeviceSvn() { return getDeviceSvnUsingSubId(getDefaultSubscription()); public String getDeviceSvn(String callingPackage) { return getDeviceSvnUsingSubId(getDefaultSubscription(), callingPackage); } public String getDeviceSvnUsingSubId(int subId) { public String getDeviceSvnUsingSubId(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getDeviceSvn(); return phoneSubInfoProxy.getDeviceSvn(callingPackage); } else { Rlog.e(TAG,"getDeviceSvn phoneSubInfoProxy is null"); return null; } } public String getSubscriberId() { return getSubscriberIdForSubscriber(getDefaultSubscription()); public String getSubscriberId(String callingPackage) { return getSubscriberIdForSubscriber(getDefaultSubscription(), callingPackage); } public String getSubscriberIdForSubscriber(int subId) { public String getSubscriberIdForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getSubscriberId(); return phoneSubInfoProxy.getSubscriberId(callingPackage); } else { Rlog.e(TAG,"getSubscriberId phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading @@ -111,14 +105,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { /** * Retrieves the serial number of the ICC, if applicable. */ public String getIccSerialNumber() { return getIccSerialNumberForSubscriber(getDefaultSubscription()); public String getIccSerialNumber(String callingPackage) { return getIccSerialNumberForSubscriber(getDefaultSubscription(), callingPackage); } public String getIccSerialNumberForSubscriber(int subId) { public String getIccSerialNumberForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getIccSerialNumber(); return phoneSubInfoProxy.getIccSerialNumber(callingPackage); } else { Rlog.e(TAG,"getIccSerialNumber phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading @@ -126,14 +120,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getLine1Number() { return getLine1NumberForSubscriber(getDefaultSubscription()); public String getLine1Number(String callingPackage) { return getLine1NumberForSubscriber(getDefaultSubscription(), callingPackage); } public String getLine1NumberForSubscriber(int subId) { public String getLine1NumberForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getLine1Number(); return phoneSubInfoProxy.getLine1Number(callingPackage); } else { Rlog.e(TAG,"getLine1Number phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading @@ -141,14 +135,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getLine1AlphaTag() { return getLine1AlphaTagForSubscriber(getDefaultSubscription()); public String getLine1AlphaTag(String callingPackage) { return getLine1AlphaTagForSubscriber(getDefaultSubscription(), callingPackage); } public String getLine1AlphaTagForSubscriber(int subId) { public String getLine1AlphaTagForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getLine1AlphaTag(); return phoneSubInfoProxy.getLine1AlphaTag(callingPackage); } else { Rlog.e(TAG,"getLine1AlphaTag phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading @@ -156,14 +150,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getMsisdn() { return getMsisdnForSubscriber(getDefaultSubscription()); public String getMsisdn(String callingPackage) { return getMsisdnForSubscriber(getDefaultSubscription(), callingPackage); } public String getMsisdnForSubscriber(int subId) { public String getMsisdnForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getMsisdn(); return phoneSubInfoProxy.getMsisdn(callingPackage); } else { Rlog.e(TAG,"getMsisdn phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading @@ -171,14 +165,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getVoiceMailNumber() { return getVoiceMailNumberForSubscriber(getDefaultSubscription()); public String getVoiceMailNumber(String callingPackage) { return getVoiceMailNumberForSubscriber(getDefaultSubscription(), callingPackage); } public String getVoiceMailNumberForSubscriber(int subId) { public String getVoiceMailNumberForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getVoiceMailNumber(); return phoneSubInfoProxy.getVoiceMailNumber(callingPackage); } else { Rlog.e(TAG,"getVoiceMailNumber phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading @@ -201,14 +195,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { } } public String getVoiceMailAlphaTag() { return getVoiceMailAlphaTagForSubscriber(getDefaultSubscription()); public String getVoiceMailAlphaTag(String callingPackage) { return getVoiceMailAlphaTagForSubscriber(getDefaultSubscription(), callingPackage); } public String getVoiceMailAlphaTagForSubscriber(int subId) { public String getVoiceMailAlphaTagForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getVoiceMailAlphaTag(); return phoneSubInfoProxy.getVoiceMailAlphaTag(callingPackage); } else { Rlog.e(TAG,"getVoiceMailAlphaTag phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading Loading @@ -280,14 +274,14 @@ public class PhoneSubInfoController extends IPhoneSubInfo.Stub { return phoneSubInfoProxy.getIccSimChallengeResponse(subId, appType, data); } public String getGroupIdLevel1() { return getGroupIdLevel1ForSubscriber(getDefaultSubscription()); public String getGroupIdLevel1(String callingPackage) { return getGroupIdLevel1ForSubscriber(getDefaultSubscription(), callingPackage); } public String getGroupIdLevel1ForSubscriber(int subId) { public String getGroupIdLevel1ForSubscriber(int subId, String callingPackage) { PhoneSubInfoProxy phoneSubInfoProxy = getPhoneSubInfoProxy(subId); if (phoneSubInfoProxy != null) { return phoneSubInfoProxy.getGroupIdLevel1(); return phoneSubInfoProxy.getGroupIdLevel1(callingPackage); } else { Rlog.e(TAG,"getGroupIdLevel1 phoneSubInfoProxy is" + " null for Subscription:" + subId); Loading
src/java/com/android/internal/telephony/PhoneSubInfoProxy.java +39 −36 Original line number Diff line number Diff line Loading @@ -35,76 +35,76 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub { } @Override public String getDeviceId() { return mPhoneSubInfo.getDeviceId(); public String getDeviceId(String callingPackage) { return mPhoneSubInfo.getDeviceId(callingPackage); } public String getImei() { return mPhoneSubInfo.getImei(); public String getImei(String callingPackage) { return mPhoneSubInfo.getImei(callingPackage); } public String getNai() { return mPhoneSubInfo.getNai(); public String getNai(String callingPackage) { return mPhoneSubInfo.getNai(callingPackage); } @Override public String getDeviceSvn() { return mPhoneSubInfo.getDeviceSvn(); public String getDeviceSvn(String callingPackage) { return mPhoneSubInfo.getDeviceSvn(callingPackage); } /** * Retrieves the unique subscriber ID, e.g., IMSI for GSM phones. */ @Override public String getSubscriberId() { return mPhoneSubInfo.getSubscriberId(); public String getSubscriberId(String callingPackage) { return mPhoneSubInfo.getSubscriberId(callingPackage); } /** * Retrieves the Group Identifier Level1 for GSM phones. */ public String getGroupIdLevel1() { return mPhoneSubInfo.getGroupIdLevel1(); public String getGroupIdLevel1(String callingPackage) { return mPhoneSubInfo.getGroupIdLevel1(callingPackage); } /** * Retrieves the serial number of the ICC, if applicable. */ @Override public String getIccSerialNumber() { return mPhoneSubInfo.getIccSerialNumber(); public String getIccSerialNumber(String callingPackage) { return mPhoneSubInfo.getIccSerialNumber(callingPackage); } /** * Retrieves the phone number string for line 1. */ @Override public String getLine1Number() { return mPhoneSubInfo.getLine1Number(); public String getLine1Number(String callingPackage) { return mPhoneSubInfo.getLine1Number(callingPackage); } /** * Retrieves the alpha identifier for line 1. */ @Override public String getLine1AlphaTag() { return mPhoneSubInfo.getLine1AlphaTag(); public String getLine1AlphaTag(String callingPackage) { return mPhoneSubInfo.getLine1AlphaTag(callingPackage); } /** * Retrieves the MSISDN Number. */ @Override public String getMsisdn() { return mPhoneSubInfo.getMsisdn(); public String getMsisdn(String callingPackage) { return mPhoneSubInfo.getMsisdn(callingPackage); } /** * Retrieves the voice mail number. */ @Override public String getVoiceMailNumber() { return mPhoneSubInfo.getVoiceMailNumber(); public String getVoiceMailNumber(String callingPackage) { return mPhoneSubInfo.getVoiceMailNumber(callingPackage); } /** Loading @@ -119,8 +119,8 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub { * Retrieves the alpha identifier associated with the voice mail number. */ @Override public String getVoiceMailAlphaTag() { return mPhoneSubInfo.getVoiceMailAlphaTag(); public String getVoiceMailAlphaTag(String callingPackage) { return mPhoneSubInfo.getVoiceMailAlphaTag(callingPackage); } /** Loading Loading @@ -158,61 +158,64 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub { } @Override public String getImeiForSubscriber(int subId) throws RemoteException { public String getImeiForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getImeiForSubscriber return null; } @Override public String getDeviceSvnUsingSubId(int subId) throws RemoteException { public String getDeviceSvnUsingSubId(int subId, String callingPackage) throws RemoteException { // FIXME: getDeviceSvnUsingSubId return null; } @Override public String getNaiForSubscriber(int subId) throws RemoteException { public String getNaiForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: NaiForSubscriber return null; } @Override public String getSubscriberIdForSubscriber(int subId) throws RemoteException { public String getSubscriberIdForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getSubscriberIdForSubscriber return null; } @Override public String getGroupIdLevel1ForSubscriber(int subId) throws RemoteException { public String getGroupIdLevel1ForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getGroupIdLevel1ForSubscriber return null; } @Override public String getIccSerialNumberForSubscriber(int subId) throws RemoteException { public String getIccSerialNumberForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getIccSerialNumberForSubscriber return null; } @Override public String getLine1NumberForSubscriber(int subId) throws RemoteException { public String getLine1NumberForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getLine1NumberForSubscriber return null; } @Override public String getLine1AlphaTagForSubscriber(int subId) throws RemoteException { public String getLine1AlphaTagForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getLine1AlphaTagForSubscriber return null; } @Override public String getMsisdnForSubscriber(int subId) throws RemoteException { public String getMsisdnForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getMsisdnForSubscriber return null; } @Override public String getVoiceMailNumberForSubscriber(int subId) throws RemoteException { public String getVoiceMailNumberForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getVoiceMailNumberForSubscriber return null; } Loading @@ -224,7 +227,7 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub { } @Override public String getVoiceMailAlphaTagForSubscriber(int subId) throws RemoteException { public String getVoiceMailAlphaTagForSubscriber(int subId, String callingPackage) throws RemoteException { // FIXME: getVoiceMailAlphaTagForSubscriber return null; } Loading Loading @@ -253,7 +256,7 @@ public class PhoneSubInfoProxy extends IPhoneSubInfo.Stub { * Returns null if the Authentification hasn't been successed or isn't present iphonesubinfo. * @return the response of ISIM Authetification, or null if not available * @deprecated * @see getIccSimChallengeResponse * @see #getIccSimChallengeResponse */ public String getIsimChallengeResponse(String nonce) { return mPhoneSubInfo.getIsimChallengeResponse(nonce); Loading