From 5fb1118d8c8a19bbbf4abc679b55f08cdfb79ba8 Mon Sep 17 00:00:00 2001 From: Shishir Agrawal Date: Wed, 26 Nov 2014 11:29:54 -0800 Subject: [PATCH] Adding a new hidden carrier API to mark GSM/CDMA networks as roaming/non-roaming. The calls allow us to specify MCC/MNCs (for GSM) and SIDs for CDMA that should not be considered as roaming for the current ICCID. Bug: 13288143 Change-Id: Iae97b02f3eb9954fedf1b005c9ecd2aa09138505 --- .../android/telephony/TelephonyManager.java | 34 +++++++++++++++++++ .../internal/telephony/ITelephony.aidl | 21 ++++++++++++ 2 files changed, 55 insertions(+) diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 73e32133d0f23..d0ddeac71581c 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -43,6 +43,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.util.Arrays; import java.util.List; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -3182,6 +3183,39 @@ public class TelephonyManager { return false; } + /** + * Override the roaming preference for the current ICCID. + * + * Using this call, the carrier app (see #hasCarrierPrivileges) can override + * the platform's notion of a network operator being considered roaming or not. + * The change only affects the ICCID that was active when this call was made. + * + * If null is passed as any of the input, the corresponding value is deleted. + * + *

Requires that the caller have carrier privilege. See #hasCarrierPrivileges. + * + * @param gsmRoamingList - List of MCCMNCs to be considered roaming for 3GPP RATs. + * @param gsmNonRoamingList - List of MCCMNCs to be considered not roaming for 3GPP RATs. + * @param cdmaRoamingList - List of SIDs to be considered roaming for 3GPP2 RATs. + * @param cdmaNonRoamingList - List of SIDs to be considered not roaming for 3GPP2 RATs. + * @return true if the operation was executed correctly. + * + * @hide + */ + public boolean setRoamingOverride(List gsmRoamingList, + List gsmNonRoamingList, List cdmaRoamingList, + List cdmaNonRoamingList) { + try { + return getITelephony().setRoamingOverride(gsmRoamingList, gsmNonRoamingList, + cdmaRoamingList, cdmaNonRoamingList); + } catch (RemoteException ex) { + Rlog.e(TAG, "setRoamingOverride RemoteException", ex); + } catch (NullPointerException ex) { + Rlog.e(TAG, "setRoamingOverride NPE", ex); + } + return false; + } + /** * Expose the rest of ITelephony to @SystemApi */ diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 4affad84253a1..ca14ca40c8093 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -791,6 +791,27 @@ interface ITelephony { */ boolean setOperatorBrandOverride(String brand); + /** + * Override the roaming indicator for the current ICCID. + * + * Using this call, the carrier app (see #hasCarrierPrivileges) can override + * the platform's notion of a network operator being considered roaming or not. + * The change only affects the ICCID that was active when this call was made. + * + * If null is passed as any of the input, the corresponding value is deleted. + * + *

Requires that the caller have carrier privilege. See #hasCarrierPrivileges. + * + * @param gsmRoamingList - List of MCCMNCs to be considered roaming for 3GPP RATs. + * @param gsmNonRoamingList - List of MCCMNCs to be considered not roaming for 3GPP RATs. + * @param cdmaRoamingList - List of SIDs to be considered roaming for 3GPP2 RATs. + * @param cdmaNonRoamingList - List of SIDs to be considered not roaming for 3GPP2 RATs. + * @return true if the operation was executed correctly. + */ + boolean setRoamingOverride(in List gsmRoamingList, + in List gsmNonRoamingList, in List cdmaRoamingList, + in List cdmaNonRoamingList); + /** * Returns the result and response from RIL for oem request *