diff --git a/api/current.txt b/api/current.txt index bd954210b90e8..6359d8d094ed1 100644 --- a/api/current.txt +++ b/api/current.txt @@ -39523,6 +39523,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 363fc54ba7fc9..8c14bac2a5e02 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -42813,6 +42813,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 8cf1dbc9d89bf..06f8b5aa41da1 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -39707,6 +39707,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 81e87b3e87133..6d465f7132150 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -4299,6 +4299,45 @@ 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. + * + * + *

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 88daf64fb4ad0..e3816b6d1a40e 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1278,7 +1278,6 @@ interface ITelephony { */ void setPolicyDataEnabled(boolean enabled, int subId); - /** * Get Client request stats which will contain statistical information * on each request made by client. @@ -1295,4 +1294,16 @@ 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); }