From f56cd7073403ebc63d97ee1f6ade1c74e7f1ccaa Mon Sep 17 00:00:00 2001 From: Nathan Harold Date: Mon, 14 Nov 2016 15:31:27 -0800 Subject: [PATCH 1/2] Add support for querying Forbidden PLMNs Bug: 32277497 Test: Verified via public API for: missing SIM and working SIM Change-Id: Ib7838a4be81853ef336e4f3d527c483b49cd2167 --- .../android/telephony/TelephonyManager.java | 26 +++++++++++++++++++ .../internal/telephony/ITelephony.aidl | 11 ++++++++ 2 files changed, 37 insertions(+) diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 8479f88a82170..c457b7d0fb703 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -4173,6 +4173,32 @@ public class TelephonyManager { } } + /** + * Returns an array of Forbidden PLMNs from the specified SIM App + * Returns null if the query fails. + * + * + *

Requires that the calling app has READ_PRIVILEGED_PHONE_STATE + * + * @param subId subscription ID used for authentication + * @param appType the icc application type, like {@link #APPTYPE_USIM} + * @return fplmns an array of forbidden PLMNs + * @hide + */ + public String[] getForbiddenPlmns(int subId, int appType) { + try { + ITelephony telephony = getITelephony(); + if (telephony == null) + return null; + return telephony.getForbiddenPlmns(subId, appType); + } catch (RemoteException ex) { + return null; + } catch (NullPointerException ex) { + // This could happen before phone starts + return null; + } + } + /** * Get P-CSCF address from PCO after data connection is established or modified. * @param apnType the apnType, "ims" for IMS APN, "emergency" for EMERGENCY APN diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 42a80b77f9078..0515168837688 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1235,4 +1235,15 @@ interface ITelephony { * @hide * */ void setSimPowerStateForSlot(int slotId, boolean powerUp); + + * Returns a list of Forbidden PLMNs from the specified SIM App + * Returns null if the query fails. + * + * + *

Requires that the calling app has READ_PRIVILEGED_PHONE_STATE + * + * @param subId subscription ID used for authentication + * @param appType the icc application type, like {@link #APPTYPE_USIM} + */ + String[] getForbiddenPlmns(int subId, int appType); } From 6a7c9333b92a1c7807a02eeffc1b10041af3d70e Mon Sep 17 00:00:00 2001 From: Nathan Harold Date: Mon, 23 Jan 2017 16:32:34 -0800 Subject: [PATCH 2/2] Provide a public API for TelephonyManager.getForbiddenPlmns() Bug: 33296073 Test: none Change-Id: I4f1bce663669c18098755c386456e6e9687a3cfb --- api/current.txt | 1 + api/system-current.txt | 1 + api/test-current.txt | 1 + .../java/android/telephony/TelephonyManager.java | 13 +++++++++++++ .../com/android/internal/telephony/ITelephony.aidl | 2 +- 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/api/current.txt b/api/current.txt index 5555d1fee7777..51bbd84251c17 100644 --- a/api/current.txt +++ b/api/current.txt @@ -37955,6 +37955,7 @@ package android.telephony { method public java.lang.String getDeviceId(); method public java.lang.String getDeviceId(int); method public java.lang.String getDeviceSoftwareVersion(); + method public java.lang.String[] getForbiddenPlmns(); method public java.lang.String getGroupIdLevel1(); method public java.lang.String getIccAuthentication(int, int, java.lang.String); method public java.lang.String getLine1Number(); diff --git a/api/system-current.txt b/api/system-current.txt index 701c86ffef563..715e9c41e43be 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -41164,6 +41164,7 @@ package android.telephony { method public java.lang.String getDeviceId(); method public java.lang.String getDeviceId(int); method public java.lang.String getDeviceSoftwareVersion(); + method public java.lang.String[] getForbiddenPlmns(); method public java.lang.String getGroupIdLevel1(); method public java.lang.String getIccAuthentication(int, int, java.lang.String); method public java.lang.String getImei(); diff --git a/api/test-current.txt b/api/test-current.txt index 1979667d8cddb..ac9263a01082c 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -38037,6 +38037,7 @@ package android.telephony { method public java.lang.String getDeviceId(); method public java.lang.String getDeviceId(int); method public java.lang.String getDeviceSoftwareVersion(); + method public java.lang.String[] getForbiddenPlmns(); method public java.lang.String getGroupIdLevel1(); method public java.lang.String getIccAuthentication(int, int, java.lang.String); method public java.lang.String getLine1Number(); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index c457b7d0fb703..94bbcf511548f 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -4173,6 +4173,19 @@ public class TelephonyManager { } } + /** + * Returns an array of Forbidden PLMNs from the USIM App + * Returns null if the query fails. + * + * + *

Requires that the caller has READ_PRIVILEGED_PHONE_STATE + * + * @return an array of forbidden PLMNs or null if not available + */ + public String[] getForbiddenPlmns() { + return getForbiddenPlmns(getSubId(), APPTYPE_USIM); + } + /** * Returns an array of Forbidden PLMNs from the specified SIM App * Returns null if the query fails. diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 0515168837688..d21efc6e091a8 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1218,7 +1218,6 @@ interface ITelephony { */ void setPolicyDataEnabled(boolean enabled, int subId); - /** * Get Client request stats which will contain statistical information * on each request made by client. @@ -1236,6 +1235,7 @@ interface ITelephony { * */ void setSimPowerStateForSlot(int slotId, boolean powerUp); + /** * Returns a list of Forbidden PLMNs from the specified SIM App * Returns null if the query fails. *