From 9ce70cfd027b2e506b3bda2514ed5bd05619d534 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. 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 25741b3e79e6c..b9cc43ded5b36 100644 --- a/api/current.txt +++ b/api/current.txt @@ -37629,6 +37629,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(); @@ -37675,6 +37676,7 @@ package android.telephony { method public java.lang.String sendEnvelopeWithStatus(java.lang.String); method public void sendUssdRequest(java.lang.String, android.telephony.TelephonyManager.OnReceiveUssdResponseCallback, android.os.Handler); method public void sendUssdRequest(java.lang.String, int, android.telephony.TelephonyManager.OnReceiveUssdResponseCallback, android.os.Handler); + 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 4a54733c4f741..02372ebccaed2 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -37719,6 +37719,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(); @@ -37765,6 +37766,7 @@ package android.telephony { method public java.lang.String sendEnvelopeWithStatus(java.lang.String); method public void sendUssdRequest(java.lang.String, android.telephony.TelephonyManager.OnReceiveUssdResponseCallback, android.os.Handler); method public void sendUssdRequest(java.lang.String, int, android.telephony.TelephonyManager.OnReceiveUssdResponseCallback, android.os.Handler); + 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 20dd012b07e19..a79e8ceaf14ad 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -4850,10 +4850,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 */ @@ -4869,10 +4878,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 */