From f7dc3f6788d6ca53663d457a545b9de880e3cf02 Mon Sep 17 00:00:00 2001 From: Nathan Harold Date: Thu, 17 Dec 2020 10:04:07 -0800 Subject: [PATCH] Fix permission on TM#isDataEnabled -Allow isDataEnabled() to be read with READ_PHONE_STATE This method just forwarded to another method in the public API that only requires READ_PHONE_STATE, so it's just a bug. -Fix a bug where TM#getDataEnabled ws ignoring the subId parameter. Bug: 148500541 Test: compilation Change-Id: I30b125b50d261175a44183369e5f318d7ad37be9 --- core/api/current.txt | 2 +- telephony/java/android/telephony/TelephonyManager.java | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index 6e8adff46b16d..63b953618185b 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -41761,7 +41761,7 @@ package android.telephony { method @Deprecated public String iccTransmitApduLogicalChannel(int, int, int, int, int, int, String); method public boolean isConcurrentVoiceAndDataSupported(); method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE, "android.permission.READ_PRIVILEGED_PHONE_STATE"}) public boolean isDataConnectionAllowed(); - method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.MODIFY_PHONE_STATE}) public boolean isDataEnabled(); + method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataEnabled(); method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataEnabledForReason(int); method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataRoamingEnabled(); method public boolean isEmergencyNumber(@NonNull String); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index dd4b6428901cb..26fd99de0a048 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -9338,9 +9338,10 @@ public class TelephonyManager { * @return true if mobile data is enabled. */ @RequiresPermission(anyOf = {android.Manifest.permission.ACCESS_NETWORK_STATE, - android.Manifest.permission.MODIFY_PHONE_STATE}) + android.Manifest.permission.MODIFY_PHONE_STATE, + android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataEnabled() { - return getDataEnabled(getSubId(SubscriptionManager.getDefaultDataSubscriptionId())); + return isDataEnabledForReason(DATA_ENABLED_REASON_USER); } /** @@ -9585,7 +9586,7 @@ public class TelephonyManager { @SystemApi public boolean getDataEnabled(int subId) { try { - return isDataEnabledForReason(DATA_ENABLED_REASON_USER); + return isDataEnabledForReason(subId, DATA_ENABLED_REASON_USER); } catch (RuntimeException e) { Log.e(TAG, "Error calling isDataEnabledForReason e:" + e); }