diff --git a/api/current.txt b/api/current.txt index d031f9184cae2..4e407c634c469 100644 --- a/api/current.txt +++ b/api/current.txt @@ -48310,7 +48310,7 @@ package android.telephony { method @Deprecated public String sendEnvelopeWithStatus(String); method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void sendUssdRequest(String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler); method public void sendVisualVoicemailSms(String, int, String, android.app.PendingIntent); - method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(boolean); + method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setForbiddenPlmns(@NonNull java.util.List); method public boolean setLine1NumberForDisplay(String, String); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNetworkSelectionModeAutomatic(); diff --git a/api/system-current.txt b/api/system-current.txt index 7f9a456009fa3..aa7ac2bb3603f 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -11200,7 +11200,6 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataConnectionAllowed(); method public boolean isDataConnectivityPossible(); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataEnabledForApn(int); - method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataEnabledWithReason(int); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isEmergencyAssistanceEnabled(); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean isIccLockEnabled(); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isIdle(); @@ -11228,11 +11227,10 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL) public void resetSettings(); method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setAllowedCarriers(int, java.util.List); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setAllowedNetworkTypes(long); - method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCarrierDataEnabled(boolean); + method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCarrierDataEnabled(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setCarrierRestrictionRules(@NonNull android.telephony.CarrierRestrictionRules); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataActivationState(int); method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(int, boolean); - method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabledWithReason(int, boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataRoamingEnabled(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMultiSimCarrierRestriction(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setOpportunisticNetworkState(boolean); @@ -11270,10 +11268,6 @@ package android.telephony { field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1 field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0 field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff - field public static final int DATA_ENABLED_REASON_CARRIER = 2; // 0x2 - field public static final int DATA_ENABLED_REASON_POLICY = 1; // 0x1 - field public static final int DATA_ENABLED_REASON_THERMAL = 3; // 0x3 - field public static final int DATA_ENABLED_REASON_USER = 0; // 0x0 field public static final String EXTRA_ANOMALY_DESCRIPTION = "android.telephony.extra.ANOMALY_DESCRIPTION"; field public static final String EXTRA_ANOMALY_ID = "android.telephony.extra.ANOMALY_ID"; field public static final String EXTRA_PHONE_IN_ECM_STATE = "android.telephony.extra.PHONE_IN_ECM_STATE"; diff --git a/telephony/api/system-current.txt b/telephony/api/system-current.txt index ea3c568a7cdcf..d5df01a09eec8 100644 --- a/telephony/api/system-current.txt +++ b/telephony/api/system-current.txt @@ -687,7 +687,6 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataConnectionAllowed(); method public boolean isDataConnectivityPossible(); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataEnabledForApn(int); - method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataEnabledWithReason(int); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isEmergencyAssistanceEnabled(); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean isIccLockEnabled(); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isIdle(); @@ -715,11 +714,10 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL) public void resetSettings(); method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setAllowedCarriers(int, java.util.List); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setAllowedNetworkTypes(long); - method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCarrierDataEnabled(boolean); + method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCarrierDataEnabled(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setCarrierRestrictionRules(@NonNull android.telephony.CarrierRestrictionRules); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataActivationState(int); method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(int, boolean); - method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabledWithReason(int, boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataRoamingEnabled(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMultiSimCarrierRestriction(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setOpportunisticNetworkState(boolean); @@ -757,10 +755,6 @@ package android.telephony { field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1 field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0 field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff - field public static final int DATA_ENABLED_REASON_CARRIER = 2; // 0x2 - field public static final int DATA_ENABLED_REASON_POLICY = 1; // 0x1 - field public static final int DATA_ENABLED_REASON_THERMAL = 3; // 0x3 - field public static final int DATA_ENABLED_REASON_USER = 0; // 0x0 field public static final String EXTRA_ANOMALY_DESCRIPTION = "android.telephony.extra.ANOMALY_DESCRIPTION"; field public static final String EXTRA_ANOMALY_ID = "android.telephony.extra.ANOMALY_ID"; field public static final String EXTRA_PHONE_IN_ECM_STATE = "android.telephony.extra.PHONE_IN_ECM_STATE"; diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index b3d7e769791c8..85490b2956a7d 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -9094,10 +9094,8 @@ public class TelephonyManager { * app has carrier privileges (see {@link #hasCarrierPrivileges}). * * @param enable Whether to enable mobile data. - * @deprecated use setDataEnabledWithReason with reason DATA_ENABLED_REASON_USER instead. * */ - @Deprecated @SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(boolean enable) { @@ -9106,13 +9104,20 @@ public class TelephonyManager { /** * @hide - * @deprecated use {@link #setDataEnabledWithReason(int, boolean)} instead. + * @deprecated use {@link #setDataEnabled(boolean)} instead. */ @SystemApi @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(int subId, boolean enable) { - setDataEnabledWithReason(subId, DATA_ENABLED_REASON_USER, enable); + try { + Log.d(TAG, "setDataEnabled: enabled=" + enable); + ITelephony telephony = getITelephony(); + if (telephony != null) + telephony.setUserDataEnabled(subId, enable); + } catch (RemoteException e) { + Log.e(TAG, "Error calling ITelephony#setUserDataEnabled", e); + } } /** @@ -9319,7 +9324,15 @@ public class TelephonyManager { @Deprecated @SystemApi public boolean getDataEnabled(int subId) { - return isDataEnabledWithReason(DATA_ENABLED_REASON_USER); + boolean retVal = false; + try { + ITelephony telephony = getITelephony(); + if (telephony != null) + retVal = telephony.isUserDataEnabled(subId); + } catch (RemoteException | NullPointerException e) { + Log.e(TAG, "Error calling ITelephony#isUserDataEnabled", e); + } + return retVal; } /** @@ -10870,15 +10883,20 @@ public class TelephonyManager { * * @param enabled control enable or disable carrier data. * @see #resetAllCarrierActions() - * @deprecated use {@link #setDataEnabledWithReason(int, boolean) with - * reason {@link #DATA_ENABLED_REASON_CARRIER}} instead. * @hide */ - @Deprecated @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCarrierDataEnabled(boolean enabled) { - setDataEnabledWithReason(DATA_ENABLED_REASON_CARRIER, enabled); + try { + ITelephony service = getITelephony(); + if (service != null) { + service.carrierActionSetMeteredApnsEnabled( + getSubId(SubscriptionManager.getDefaultDataSubscriptionId()), enabled); + } + } catch (RemoteException e) { + Log.e(TAG, "Error calling ITelephony#setCarrierDataEnabled", e); + } } /** @@ -10963,149 +10981,20 @@ public class TelephonyManager { /** * Policy control of data connection. Usually used when data limit is passed. * @param enabled True if enabling the data, otherwise disabling. - * @deprecated use {@link #setDataEnabledWithReason(int, boolean) with - * reason {@link #DATA_ENABLED_REASON_POLICY}} instead. * @hide */ - @Deprecated @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) public void setPolicyDataEnabled(boolean enabled) { - setDataEnabledWithReason(DATA_ENABLED_REASON_POLICY, enabled); - } - - /** @hide */ - @IntDef({ - DATA_ENABLED_REASON_USER, - DATA_ENABLED_REASON_POLICY, - DATA_ENABLED_REASON_CARRIER, - DATA_ENABLED_REASON_THERMAL - }) - @Retention(RetentionPolicy.SOURCE) - public @interface DataEnabledReason{} - - /** - * To indicate that user enabled or disabled data. - * @hide - */ - @SystemApi - public static final int DATA_ENABLED_REASON_USER = 0; - - /** - * To indicate that data control due to policy. Usually used when data limit is passed. - * Policy data on/off won't affect user settings but will bypass the - * settings and turns off data internally if set to {@code false}. - * @hide - */ - @SystemApi - public static final int DATA_ENABLED_REASON_POLICY = 1; - - /** - * To indicate enable or disable carrier data by the system based on carrier signalling or - * carrier privileged apps. Carrier data on/off won't affect user settings but will bypass the - * settings and turns off data internally if set to {@code false}. - * @hide - */ - @SystemApi - public static final int DATA_ENABLED_REASON_CARRIER = 2; - - /** - * To indicate enable or disable data by thermal service. - * Thermal data on/off won't affect user settings but will bypass the - * settings and turns off data internally if set to {@code false}. - * @hide - */ - @SystemApi - public static final int DATA_ENABLED_REASON_THERMAL = 3; - - /** - * Control of data connection and provide the reason triggering the data connection control. - * This can be called for following reasons - *
    - *
  1. data limit is passed {@link #DATA_ENABLED_REASON_POLICY} - *
  2. data disabled by carrier {@link #DATA_ENABLED_REASON_CARRIER} - *
  3. data disabled by user {@link #DATA_ENABLED_REASON_USER} - *
  4. data disabled due to thermal {@link #DATA_ENABLED_REASON_THERMAL} - *
- * If any of the reason is off, then it will result in - * bypassing user preference and result in data to be turned off. - * - *

If this object has been created with {@link #createForSubscriptionId}, applies - * to the given subId. Otherwise, applies to - * {@link SubscriptionManager#getDefaultDataSubscriptionId()} - * - * - * @param reason the reason the data enable change is taking place - * @param enabled True if enabling the data, otherwise disabling. - * - *

Requires Permission: - * The calling app has carrier privileges (see {@link #hasCarrierPrivileges}) if the reason is - * {@link #DATA_ENABLED_REASON_USER} or {@link #DATA_ENABLED_REASON_CARRIER} or the call app - * has {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} irrespective of - * the reason. - * @throws IllegalStateException if the Telephony process is not currently available. - * @hide - */ - @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) - @SystemApi - public void setDataEnabledWithReason(@DataEnabledReason int reason, boolean enabled) { - setDataEnabledWithReason(getSubId(), reason, enabled); - } - - private void setDataEnabledWithReason(int subId, @DataEnabledReason int reason, - boolean enabled) { try { ITelephony service = getITelephony(); if (service != null) { - service.setDataEnabledWithReason(subId, reason, enabled); - } else { - throw new IllegalStateException("telephony service is null."); + service.setPolicyDataEnabled(enabled, getSubId()); } - } catch (RemoteException ex) { - Log.e(TAG, "Telephony#setDataEnabledWithReason RemoteException", ex); - ex.rethrowFromSystemServer(); + } catch (RemoteException e) { + Log.e(TAG, "Error calling ITelephony#setPolicyDataEnabled", e); } } - /** - * Return whether data is enabled for certain reason . - * - * If {@link #isDataEnabledWithReason} returns false, it means in data enablement for a - * specific reason is turned off. If any of the reason is off, then it will result in - * bypassing user preference and result in data to be turned off. - * - *

If this object has been created with {@link #createForSubscriptionId}, applies - * to the given subId. Otherwise, applies to - * {@link SubscriptionManager#getDefaultDataSubscriptionId()} - * - * @param reason the reason the data enable change is taking place - * @return whether data is enabled for a reason. - *

Requires Permission: - * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} - * @throws IllegalStateException if the Telephony process is not currently available. - * @hide - */ - @RequiresPermission(anyOf = {android.Manifest.permission.ACCESS_NETWORK_STATE, - android.Manifest.permission.READ_PHONE_STATE}) - @SystemApi - public boolean isDataEnabledWithReason(@DataEnabledReason int reason) { - return isDataEnabledWithReason(getSubId(), reason); - } - - private boolean isDataEnabledWithReason(int subId, @DataEnabledReason int reason) { - try { - ITelephony service = getITelephony(); - if (service != null) { - return service.isDataEnabledWithReason(subId, reason); - } else { - throw new IllegalStateException("telephony service is null."); - } - } catch (RemoteException ex) { - Log.e(TAG, "Telephony#isDataEnabledWithReason RemoteException", ex); - ex.rethrowFromSystemServer(); - } - return false; - } - /** * Get Client request stats which will contain statistical information * on each request made by client. diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 07d00ab2aae67..b51675559b95e 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -957,6 +957,13 @@ interface ITelephony { */ boolean setPreferredNetworkType(int subId, int networkType); + /** + * User enable/disable Mobile Data. + * + * @param enable true to turn on, else false + */ + void setUserDataEnabled(int subId, boolean enable); + /** * Get the user enabled state of Mobile Data. * @@ -978,29 +985,12 @@ interface ITelephony { boolean isUserDataEnabled(int subId); /** - * Check if data is enabled on the device. It can be disabled by - * user, carrier, policy or thermal. + * Get the overall enabled state of Mobile Data. + * * @return true on enabled */ boolean isDataEnabled(int subId); - /** - * Control of data connection and provide the reason triggering the data connection control. - * - * @param subId user preferred subId. - * @param reason the reason the data enable change is taking place - * @param enable true to turn on, else false - */ - void setDataEnabledWithReason(int subId, int reason, boolean enable); - - /** - * Return whether data is enabled for certain reason - * @param subId user preferred subId. . - * @param reason the reason the data enable change is taking place - * @return true on enabled - */ - boolean isDataEnabledWithReason(int subId, int reason); - /** * Checks if manual network selection is allowed. * @@ -1597,6 +1587,15 @@ interface ITelephony { */ int getCarrierIdFromMccMnc(int slotIndex, String mccmnc, boolean isSubscriptionMccMnc); + /** + * Action set from carrier signalling broadcast receivers to enable/disable metered apns + * Permissions android.Manifest.permission.MODIFY_PHONE_STATE is required + * @param subId the subscription ID that this action applies to. + * @param enabled control enable or disable metered apns. + * @hide + */ + void carrierActionSetMeteredApnsEnabled(int subId, boolean visible); + /** * Action set from carrier signalling broadcast receivers to enable/disable radio * Permissions android.Manifest.permission.MODIFY_PHONE_STATE is required @@ -1697,6 +1696,14 @@ interface ITelephony { */ boolean setCallWaitingStatus(int subId, boolean isEnable); + /** + * Policy control of data connection. Usually used when data limit is passed. + * @param enabled True if enabling the data, otherwise disabling. + * @param subId Subscription index + * @hide + */ + void setPolicyDataEnabled(boolean enabled, int subId); + /** * Get Client request stats which will contain statistical information * on each request made by client.