From 5b509b81a0d5b14148745368b153dc6b8d4482ac Mon Sep 17 00:00:00 2001 From: fionaxu Date: Mon, 19 Mar 2018 00:41:14 -0700 Subject: [PATCH] A test api to override carrier information This API should only be used for testing purpose e.g., CTS/GTS/SL4A By overriding carrier information, we could force a particular carrier id, carrier's config, but also any country or carrier overlays to be loaded when using a test SIM with a call box. Bug: 72332597 Test: atest CtsTelephonyTestCases:CarrierIdentificationTest Change-Id: Icd5804375ef9334c9f6c382cc6a774b9c9c15213 --- api/test-current.txt | 6 +++ .../android/telephony/TelephonyManager.java | 53 +++++++++++++++++++ .../internal/telephony/ITelephony.aidl | 13 +++++ 3 files changed, 72 insertions(+) diff --git a/api/test-current.txt b/api/test-current.txt index dd16771186f1b..9a192703dc929 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -772,6 +772,12 @@ package android.telephony { method public void setCdmaSystemAndNetworkId(int, int); } + public class TelephonyManager { + method public int getCarrierIdListVersion(); + method public void setCarrierTestOverride(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String); + field public static final int UNKNOWN_CARRIER_ID_LIST_VERSION = -1; // 0xffffffff + } + } package android.telephony.mbms { diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index c5386eff612ec..aa66feddede34 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -27,6 +27,7 @@ import android.annotation.SuppressAutoDoc; import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.annotation.SystemService; +import android.annotation.TestApi; import android.annotation.WorkerThread; import android.app.ActivityThread; import android.app.PendingIntent; @@ -1061,6 +1062,13 @@ public class TelephonyManager { */ public static final int UNKNOWN_CARRIER_ID = -1; + /** + * An unknown carrier id list version. + * @hide + */ + @TestApi + public static final int UNKNOWN_CARRIER_ID_LIST_VERSION = -1; + /** * Broadcast Action: The subscription carrier identity has changed. * This intent could be sent on the following events: @@ -7838,4 +7846,49 @@ public class TelephonyManager { // This could happen if binder process crashes. } } + + /** + * A test API to override carrier information including mccmnc, imsi, iccid, gid1, gid2, + * plmn and spn. This would be handy for, eg, forcing a particular carrier id, carrier's config + * (also any country or carrier overlays) to be loaded when using a test SIM with a call box. + * + *

Requires Permission: + * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} + * + * @hide + */ + @TestApi + public void setCarrierTestOverride(String mccmnc, String imsi, String iccid, String gid1, + String gid2, String plmn, String spn) { + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + telephony.setCarrierTestOverride( + getSubId(), mccmnc, imsi, iccid, gid1, gid2, plmn, spn); + } + } catch (RemoteException ex) { + // This could happen if binder process crashes. + } + } + + /** + * A test API to return installed carrier id list version + * + *

Requires Permission: + * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE READ_PRIVILEGED_PHONE_STATE} + * + * @hide + */ + @TestApi + public int getCarrierIdListVersion() { + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + return telephony.getCarrierIdListVersion(getSubId()); + } + } catch (RemoteException ex) { + // This could happen if binder process crashes. + } + return UNKNOWN_CARRIER_ID_LIST_VERSION; + } } diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index fbb69ad78bb63..03fc84d87b059 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1486,4 +1486,17 @@ interface ITelephony { * screen is off) we want to turn on those indications even when the screen is off. */ void setRadioIndicationUpdateMode(int subId, int filters, int mode); + + /** + * A test API to override carrier information including mccmnc, imsi, iccid, gid1, gid2, + * plmn and spn. This would be handy for, eg, forcing a particular carrier id, carrier's config + * (also any country or carrier overlays) to be loaded when using a test SIM with a call box. + */ + void setCarrierTestOverride(int subId, String mccmnc, String imsi, String iccid, String gid1, + String gid2, String plmn, String spn); + + /** + * A test API to return installed carrier id list version. + */ + int getCarrierIdListVersion(int subId); }