Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 760d5797 authored by Sooraj Sasindran's avatar Sooraj Sasindran Committed by Automerger Merge Worker
Browse files

Support api to control data by thermal service am: 70c1d668

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1481056

Change-Id: Ia36a897ffc6a33b966805e039e78569badb8c688
parents 68acc834 70c1d668
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -48342,7 +48342,7 @@ package android.telephony {
    method @Deprecated public String sendEnvelopeWithStatus(String);
    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 @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 public void sendVisualVoicemailSms(String, int, String, android.app.PendingIntent);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(boolean);
    method @Deprecated @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<java.lang.String>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setForbiddenPlmns(@NonNull java.util.List<java.lang.String>);
    method public boolean setLine1NumberForDisplay(String, String);
    method public boolean setLine1NumberForDisplay(String, String);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNetworkSelectionModeAutomatic();
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNetworkSelectionModeAutomatic();
+7 −1
Original line number Original line Diff line number Diff line
@@ -11250,6 +11250,7 @@ package android.telephony {
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataConnectionAllowed();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataConnectionAllowed();
    method public boolean isDataConnectivityPossible();
    method public boolean isDataConnectivityPossible();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataEnabledForApn(int);
    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) public boolean isEmergencyAssistanceEnabled();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean isIccLockEnabled();
    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();
    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isIdle();
@@ -11280,10 +11281,11 @@ package android.telephony {
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setAllowedNetworkTypes(long);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setAllowedNetworkTypes(long);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCallForwarding(@NonNull android.telephony.CallForwardingInfo, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCallForwarding(@NonNull android.telephony.CallForwardingInfo, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCallWaitingEnabled(boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCallWaitingEnabled(boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCarrierDataEnabled(boolean);
    method @Deprecated @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 int setCarrierRestrictionRules(@NonNull android.telephony.CarrierRestrictionRules);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataActivationState(int);
    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 @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 setDataRoamingEnabled(boolean);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMobileDataPolicyEnabledStatus(int, boolean);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMobileDataPolicyEnabledStatus(int, boolean);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMultiSimCarrierRestriction(boolean);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMultiSimCarrierRestriction(boolean);
@@ -11326,6 +11328,10 @@ package android.telephony {
    field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
    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_NO_ACCESS = 0; // 0x0
    field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff
    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_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_ANOMALY_ID = "android.telephony.extra.ANOMALY_ID";
    field public static final String EXTRA_PHONE_IN_ECM_STATE = "android.telephony.extra.PHONE_IN_ECM_STATE";
    field public static final String EXTRA_PHONE_IN_ECM_STATE = "android.telephony.extra.PHONE_IN_ECM_STATE";
+1 −1
Original line number Original line Diff line number Diff line
@@ -46510,7 +46510,7 @@ package android.telephony {
    method @Deprecated public String sendEnvelopeWithStatus(String);
    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 @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 public void sendVisualVoicemailSms(String, int, String, android.app.PendingIntent);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(boolean);
    method @Deprecated @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<java.lang.String>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setForbiddenPlmns(@NonNull java.util.List<java.lang.String>);
    method public boolean setLine1NumberForDisplay(String, String);
    method public boolean setLine1NumberForDisplay(String, String);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNetworkSelectionModeAutomatic();
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNetworkSelectionModeAutomatic();
+7 −1
Original line number Original line Diff line number Diff line
@@ -10132,6 +10132,7 @@ package android.telephony {
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataConnectionAllowed();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataConnectionAllowed();
    method public boolean isDataConnectivityPossible();
    method public boolean isDataConnectivityPossible();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataEnabledForApn(int);
    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) public boolean isEmergencyAssistanceEnabled();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean isIccLockEnabled();
    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();
    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isIdle();
@@ -10162,10 +10163,11 @@ package android.telephony {
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setAllowedNetworkTypes(long);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setAllowedNetworkTypes(long);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCallForwarding(@NonNull android.telephony.CallForwardingInfo, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCallForwarding(@NonNull android.telephony.CallForwardingInfo, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCallWaitingEnabled(boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCallWaitingEnabled(boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCarrierDataEnabled(boolean);
    method @Deprecated @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 int setCarrierRestrictionRules(@NonNull android.telephony.CarrierRestrictionRules);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataActivationState(int);
    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 @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 setDataRoamingEnabled(boolean);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMobileDataPolicyEnabledStatus(int, boolean);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMobileDataPolicyEnabledStatus(int, boolean);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMultiSimCarrierRestriction(boolean);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMultiSimCarrierRestriction(boolean);
@@ -10208,6 +10210,10 @@ package android.telephony {
    field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
    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_NO_ACCESS = 0; // 0x0
    field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff
    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_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_ANOMALY_ID = "android.telephony.extra.ANOMALY_ID";
    field public static final String EXTRA_PHONE_IN_ECM_STATE = "android.telephony.extra.PHONE_IN_ECM_STATE";
    field public static final String EXTRA_PHONE_IN_ECM_STATE = "android.telephony.extra.PHONE_IN_ECM_STATE";
+141 −30
Original line number Original line Diff line number Diff line
@@ -9160,8 +9160,10 @@ public class TelephonyManager {
     * app has carrier privileges (see {@link #hasCarrierPrivileges}).
     * app has carrier privileges (see {@link #hasCarrierPrivileges}).
     *
     *
     * @param enable Whether to enable mobile data.
     * @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
    @SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges
    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    public void setDataEnabled(boolean enable) {
    public void setDataEnabled(boolean enable) {
@@ -9170,20 +9172,13 @@ public class TelephonyManager {
    /**
    /**
     * @hide
     * @hide
     * @deprecated use {@link #setDataEnabled(boolean)} instead.
     * @deprecated use {@link #setDataEnabledWithReason(int, boolean)} instead.
    */
    */
    @SystemApi
    @SystemApi
    @Deprecated
    @Deprecated
    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    public void setDataEnabled(int subId, boolean enable) {
    public void setDataEnabled(int subId, boolean enable) {
        try {
        setDataEnabledWithReason(subId, DATA_ENABLED_REASON_USER, enable);
            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);
        }
    }
    }
    /**
    /**
@@ -9390,15 +9385,7 @@ public class TelephonyManager {
    @Deprecated
    @Deprecated
    @SystemApi
    @SystemApi
    public boolean getDataEnabled(int subId) {
    public boolean getDataEnabled(int subId) {
        boolean retVal = false;
        return isDataEnabledWithReason(DATA_ENABLED_REASON_USER);
        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;
    }
    }
    /**
    /**
@@ -10956,20 +10943,15 @@ public class TelephonyManager {
     *
     *
     * @param enabled control enable or disable carrier data.
     * @param enabled control enable or disable carrier data.
     * @see #resetAllCarrierActions()
     * @see #resetAllCarrierActions()
     * @deprecated use {@link #setDataEnabledWithReason(int, boolean) with
     * reason {@link #DATA_ENABLED_REASON_CARRIER}} instead.
     * @hide
     * @hide
     */
     */
    @Deprecated
    @SystemApi
    @SystemApi
    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    public void setCarrierDataEnabled(boolean enabled) {
    public void setCarrierDataEnabled(boolean enabled) {
        try {
        setDataEnabledWithReason(DATA_ENABLED_REASON_CARRIER, enabled);
            ITelephony service = getITelephony();
            if (service != null) {
                service.carrierActionSetMeteredApnsEnabled(
                        getSubId(SubscriptionManager.getDefaultDataSubscriptionId()), enabled);
            }
        } catch (RemoteException e) {
            Log.e(TAG, "Error calling ITelephony#setCarrierDataEnabled", e);
        }
    }
    }
    /**
    /**
@@ -11054,18 +11036,147 @@ public class TelephonyManager {
    /**
    /**
     * Policy control of data connection. Usually used when data limit is passed.
     * Policy control of data connection. Usually used when data limit is passed.
     * @param enabled True if enabling the data, otherwise disabling.
     * @param enabled True if enabling the data, otherwise disabling.
     * @deprecated use {@link #setDataEnabledWithReason(int, boolean) with
     * reason {@link #DATA_ENABLED_REASON_POLICY}} instead.
     * @hide
     * @hide
     */
     */
    @Deprecated
    @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
    @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
    public void setPolicyDataEnabled(boolean enabled) {
    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
     * <ol>
     * <li>data limit is passed {@link #DATA_ENABLED_REASON_POLICY}
     * <li>data disabled by carrier {@link #DATA_ENABLED_REASON_CARRIER}
     * <li>data disabled by user {@link #DATA_ENABLED_REASON_USER}
     * <li>data disabled due to thermal {@link #DATA_ENABLED_REASON_THERMAL}
     * </ol>
     * If any of the reason is off, then it will result in
     * bypassing user preference and result in data to be turned off.
     *
     * <p>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.
     *
     * <p>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 {
        try {
            ITelephony service = getITelephony();
            ITelephony service = getITelephony();
            if (service != null) {
            if (service != null) {
                service.setPolicyDataEnabled(enabled, getSubId());
                service.setDataEnabledWithReason(subId, reason, enabled);
            } else {
                throw new IllegalStateException("telephony service is null.");
            }
        } 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.
     *
     * <p>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.
     * <p>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;
    }
    }
    /**
    /**
Loading