From 105f65068cf38d41ac5275e52f66e5ab5b7023cc Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Thu, 26 Sep 2019 11:44:52 -0700 Subject: [PATCH] Added read phone state permission for getNetworkCountryIso The slot based version of getNetworkCountryIso is a system API. So it needs to be gaurded by permission. Bug: 141646066 Test: Telephony sanity tests Change-Id: I810ff0b77b93870ae3f62769977c7094789d0a5a --- api/system-current.txt | 2 +- api/test-current.txt | 2 +- .../java/android/telephony/TelephonyManager.java | 12 ++++++++++-- .../com/android/internal/telephony/ITelephony.aidl | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index 279d2c89808e3..2a40d4fd43b99 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -8236,7 +8236,7 @@ package android.telephony { method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimIst(); method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Map getLogicalToPhysicalSlotMapping(); method public static long getMaxNumberVerificationTimeoutMillis(); - method @NonNull public String getNetworkCountryIso(int); + method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getNetworkCountryIso(int); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getPreferredNetworkTypeBitmask(); method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public int getRadioPowerState(); method public int getSimApplicationState(); diff --git a/api/test-current.txt b/api/test-current.txt index 75d80bd9eeafb..75ece39595d37 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -2914,7 +2914,7 @@ package android.telephony { method public int checkCarrierPrivilegesForPackage(String); method public int getCarrierIdListVersion(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getLine1AlphaTag(); - method @NonNull public String getNetworkCountryIso(int); + method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getNetworkCountryIso(int); method public android.util.Pair getRadioHalVersion(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void refreshUiccProfile(); method @Deprecated public void setCarrierTestOverride(String, String, String, String, String, String, String); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 4f276bc845ca1..a94fd487e3329 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -2449,7 +2449,14 @@ public class TelephonyManager { * @return the lowercase 2 character ISO-3166 country code, or empty string if not available. */ public String getNetworkCountryIso() { - return getNetworkCountryIso(getPhoneId()); + try { + ITelephony telephony = getITelephony(); + if (telephony == null) return ""; + return telephony.getNetworkCountryIsoForPhone(getPhoneId(), + null /* no permission check */); + } catch (RemoteException ex) { + return ""; + } } /** @@ -2475,11 +2482,12 @@ public class TelephonyManager { @SystemApi @TestApi @NonNull + @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getNetworkCountryIso(int slotIndex) { try { ITelephony telephony = getITelephony(); if (telephony == null) return ""; - return telephony.getNetworkCountryIsoForPhone(slotIndex); + return telephony.getNetworkCountryIsoForPhone(slotIndex, getOpPackageName()); } catch (RemoteException ex) { return ""; } diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 866e936a1211e..4d90579757272 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -302,7 +302,7 @@ interface ITelephony { * operator's MCC (Mobile Country Code). * @see android.telephony.TelephonyManager#getNetworkCountryIso */ - String getNetworkCountryIsoForPhone(int phoneId); + String getNetworkCountryIsoForPhone(int phoneId, String callingPkg); /** * Returns the neighboring cell information of the device.