From 780b62b3b52566b2e6ea5d0070a3276189040392 Mon Sep 17 00:00:00 2001 From: fionaxu Date: Mon, 19 Mar 2018 00:41:14 -0700 Subject: 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 (cherry picked from commit 5b509b81a0d5b14148745368b153dc6b8d4482ac) Merged-in: 5b509b81a0d5b14148745368b153dc6b8d4482ac --- api/test-current.txt | 6 +++ .../java/android/telephony/TelephonyManager.java | 53 ++++++++++++++++++++++ .../com/android/internal/telephony/ITelephony.aidl | 13 ++++++ 3 files changed, 72 insertions(+) diff --git a/api/test-current.txt b/api/test-current.txt index 8ef12b45dcf5..709b37eedda8 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -440,6 +440,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 49094604a841..f55061a241f5 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; @@ -1034,6 +1035,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: @@ -7756,4 +7764,49 @@ public class TelephonyManager { } } } + + /** + * 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 1ace032b5dcf..9b71b8a1b9a5 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1481,4 +1481,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); } -- cgit v1.2.3-59-g8ed1b