From 40db40878e9f7a25f63076d95d7c7859488290cb Mon Sep 17 00:00:00 2001 From: Jeff Davidson Date: Fri, 18 Nov 2016 15:48:15 -0800 Subject: [PATCH] Expose TelephonyManager#{set,get}DataEnabled. setDataEnabled requires MODIFY_PHONE_STATE or carrier privileges. getDataEnabled will work with any of the above or ACCESS_NETWORK_STATE. Merged-In: I2d5a9df2e55f3f7be1729abefe137c00ae1d6c4e Test: Exercised APIs from test app, updated and executed CTS tests Change-Id: I2d5a9df2e55f3f7be1729abefe137c00ae1d6c4e Fixes: 32644451 --- api/current.txt | 2 ++ api/test-current.txt | 2 ++ .../android/telephony/TelephonyManager.java | 31 +++++++++++++++---- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/api/current.txt b/api/current.txt index 277c6f574daad..f736bc0cf098f 100644 --- a/api/current.txt +++ b/api/current.txt @@ -37222,6 +37222,7 @@ package android.telephony { method public int getCallState(); method public android.telephony.CellLocation getCellLocation(); method public int getDataActivity(); + method public boolean getDataEnabled(); method public int getDataNetworkType(); method public int getDataState(); method public java.lang.String getDeviceId(); @@ -37266,6 +37267,7 @@ package android.telephony { method public boolean isWorldPhone(); method public void listen(android.telephony.PhoneStateListener, int); method public java.lang.String sendEnvelopeWithStatus(java.lang.String); + method public void setDataEnabled(boolean); method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String); method public boolean setOperatorBrandOverride(java.lang.String); method public boolean setPreferredNetworkTypeToGlobal(); diff --git a/api/test-current.txt b/api/test-current.txt index f2202eb202c20..4af06152121dd 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -37299,6 +37299,7 @@ package android.telephony { method public int getCallState(); method public android.telephony.CellLocation getCellLocation(); method public int getDataActivity(); + method public boolean getDataEnabled(); method public int getDataNetworkType(); method public int getDataState(); method public java.lang.String getDeviceId(); @@ -37343,6 +37344,7 @@ package android.telephony { method public boolean isWorldPhone(); method public void listen(android.telephony.PhoneStateListener, int); method public java.lang.String sendEnvelopeWithStatus(java.lang.String); + method public void setDataEnabled(boolean); method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String); method public boolean setOperatorBrandOverride(java.lang.String); method public boolean setPreferredNetworkTypeToGlobal(); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 4e4e75dd81596..ca17c066e3ef4 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -4557,10 +4557,19 @@ public class TelephonyManager { return false; } - /** @hide */ - @SystemApi + /** + * Turns mobile data on or off. + * + *

Requires Permission: + * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the + * calling app has carrier privileges. + * + * @param enable Whether to enable mobile data. + * + * @see #hasCarrierPrivileges + */ public void setDataEnabled(boolean enable) { - setDataEnabled(SubscriptionManager.getDefaultDataSubscriptionId(), enable); + setDataEnabled(getSubId(), enable); } /** @hide */ @@ -4576,10 +4585,20 @@ public class TelephonyManager { } } - /** @hide */ - @SystemApi + /** + * Returns whether mobile data is enabled or not. + * + *

Requires Permission: + * {@link android.Manifest.permission#ACCESS_NETWORK_STATE ACCESS_NETWORK_STATE}, + * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}, or that the + * calling app has carrier privileges. + * + * @return true if mobile data is enabled. + * + * @see #hasCarrierPrivileges + */ public boolean getDataEnabled() { - return getDataEnabled(SubscriptionManager.getDefaultDataSubscriptionId()); + return getDataEnabled(getSubId()); } /** @hide */