diff options
| -rw-r--r-- | api/current.txt | 9 | ||||
| -rwxr-xr-x | api/system-current.txt | 3 | ||||
| -rw-r--r-- | core/api/current.txt | 9 | ||||
| -rw-r--r-- | core/api/system-current.txt | 3 | ||||
| -rw-r--r-- | telephony/java/android/telephony/TelephonyManager.java | 177 | ||||
| -rw-r--r-- | telephony/java/com/android/internal/telephony/ITelephony.aidl | 45 | 
6 files changed, 187 insertions, 59 deletions
diff --git a/api/current.txt b/api/current.txt index 19c31380a935..c2e75cd14968 100644 --- a/api/current.txt +++ b/api/current.txt @@ -48321,7 +48321,9 @@ package android.telephony {      method @Deprecated public String iccTransmitApduBasicChannel(int, int, int, int, int, String);      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.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);      method public boolean isHearingAidCompatibilitySupported(); @@ -48342,7 +48344,8 @@ 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 @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 void setDataEnabledForReason(int, boolean);      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 @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNetworkSelectionModeAutomatic(); @@ -48390,6 +48393,10 @@ package android.telephony {      field public static final int DATA_CONNECTING = 1; // 0x1      field public static final int DATA_DISCONNECTED = 0; // 0x0      field public static final int DATA_DISCONNECTING = 4; // 0x4 +    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 int DATA_SUSPENDED = 3; // 0x3      field public static final int DATA_UNKNOWN = -1; // 0xffffffff      field public static final String EXTRA_ACTIVE_SIM_SUPPORTED_COUNT = "android.telephony.extra.ACTIVE_SIM_SUPPORTED_COUNT"; diff --git a/api/system-current.txt b/api/system-current.txt index 0104ca25795c..85d7930cf43c 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -11247,7 +11247,6 @@ package android.telephony {      method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAnyRadioPoweredOn();      method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApnMetered(int);      method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApplicationOnUicc(int); -    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(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isEmergencyAssistanceEnabled(); @@ -11280,7 +11279,7 @@ package android.telephony {      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 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 void setDataActivationState(int);      method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(int, boolean); diff --git a/core/api/current.txt b/core/api/current.txt index 4a449049cafd..ab0aec73346b 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -46489,7 +46489,9 @@ package android.telephony {      method @Deprecated public String iccTransmitApduBasicChannel(int, int, int, int, int, String);      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.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);      method public boolean isHearingAidCompatibilitySupported(); @@ -46510,7 +46512,8 @@ 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 @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 void setDataEnabledForReason(int, boolean);      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 @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNetworkSelectionModeAutomatic(); @@ -46558,6 +46561,10 @@ package android.telephony {      field public static final int DATA_CONNECTING = 1; // 0x1      field public static final int DATA_DISCONNECTED = 0; // 0x0      field public static final int DATA_DISCONNECTING = 4; // 0x4 +    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 int DATA_SUSPENDED = 3; // 0x3      field public static final int DATA_UNKNOWN = -1; // 0xffffffff      field public static final String EXTRA_ACTIVE_SIM_SUPPORTED_COUNT = "android.telephony.extra.ACTIVE_SIM_SUPPORTED_COUNT"; diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 95fc15254cd4..25f72bd49f2c 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -10129,7 +10129,6 @@ package android.telephony {      method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAnyRadioPoweredOn();      method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApnMetered(int);      method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApplicationOnUicc(int); -    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(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isEmergencyAssistanceEnabled(); @@ -10162,7 +10161,7 @@ package android.telephony {      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 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 void setDataActivationState(int);      method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(int, boolean); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 56c2500ee295..0e327b42fe3a 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -9160,8 +9160,10 @@ public class TelephonyManager {       * app has carrier privileges (see {@link #hasCarrierPrivileges}).       *       * @param enable Whether to enable mobile data. +     * @deprecated use setDataEnabledForReason 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) { @@ -9170,19 +9172,16 @@ public class TelephonyManager {      /**       * @hide -     * @deprecated use {@link #setDataEnabled(boolean)} instead. +     * @deprecated use {@link #setDataEnabledForReason(int, boolean)} instead.      */      @SystemApi      @Deprecated      @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)      public void setDataEnabled(int subId, boolean 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); +            setDataEnabledForReason(subId, DATA_ENABLED_REASON_USER, enable); +        } catch (RuntimeException e) { +            Log.e(TAG, "Error calling setDataEnabledForReason e:" + e);          }      } @@ -9390,15 +9389,12 @@ public class TelephonyManager {      @Deprecated      @SystemApi      public boolean getDataEnabled(int subId) { -        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 isDataEnabledForReason(DATA_ENABLED_REASON_USER); +        } catch (RuntimeException e) { +            Log.e(TAG, "Error calling isDataEnabledForReason e:" + e);          } -        return retVal; +        return false;      }      /** @@ -10956,19 +10952,18 @@ public class TelephonyManager {       *       * @param enabled control enable or disable carrier data.       * @see #resetAllCarrierActions() +     * @deprecated use {@link #setDataEnabledForReason(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) {          try { -            ITelephony service = getITelephony(); -            if (service != null) { -                service.carrierActionSetMeteredApnsEnabled( -                        getSubId(SubscriptionManager.getDefaultDataSubscriptionId()), enabled); -            } -        } catch (RemoteException e) { -            Log.e(TAG, "Error calling ITelephony#setCarrierDataEnabled", e); +            setDataEnabledForReason(DATA_ENABLED_REASON_CARRIER, enabled); +        } catch (RuntimeException e) { +            Log.e(TAG, "Error calling setDataEnabledForReason e:" + e);          }      } @@ -11054,18 +11049,142 @@ 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 #setDataEnabledForReason(int, boolean) with +     * reason {@link #DATA_ENABLED_REASON_POLICY}} instead.       * @hide       */ +    @Deprecated      @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)      public void setPolicyDataEnabled(boolean enabled) {          try { +            setDataEnabledForReason(DATA_ENABLED_REASON_POLICY, enabled); +        } catch (RuntimeException e) { +            Log.e(TAG, "Error calling setDataEnabledForReason e:" + e); +        } +    } + +    /** @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. +     */ +    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}. +     */ +    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}. +     */ +    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}. +     */ +    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. +     */ +    @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) +    public void setDataEnabledForReason(@DataEnabledReason int reason, boolean enabled) { +        setDataEnabledForReason(getSubId(), reason, enabled); +    } + +    private void setDataEnabledForReason(int subId, @DataEnabledReason int reason, +            boolean enabled) { +        try {              ITelephony service = getITelephony();              if (service != null) { -                service.setPolicyDataEnabled(enabled, getSubId()); +                service.setDataEnabledForReason(subId, reason, enabled); +            } else { +                throw new IllegalStateException("telephony service is null.");              } -        } catch (RemoteException e) { -            Log.e(TAG, "Error calling ITelephony#setPolicyDataEnabled", e); +        } catch (RemoteException ex) { +            Log.e(TAG, "Telephony#setDataEnabledForReason RemoteException", ex); +            ex.rethrowFromSystemServer(); +        } +    } + +    /** +     * Return whether data is enabled for certain reason . +     * +     * If {@link #isDataEnabledForReason} 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. Call +     * {@link #isDataConnectionAllowed} in order to know whether +     * data connection is allowed on the device. +     * +     * <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} or +     * {@link android.Manifest.permission#ACCESS_NETWORK_STATE} +     * @throws IllegalStateException if the Telephony process is not currently available. +     */ +    @RequiresPermission(anyOf = {android.Manifest.permission.ACCESS_NETWORK_STATE, +            android.Manifest.permission.READ_PHONE_STATE}) +    public boolean isDataEnabledForReason(@DataEnabledReason int reason) { +        return isDataEnabledForReason(getSubId(), reason); +    } + +    private boolean isDataEnabledForReason(int subId, @DataEnabledReason int reason) { +        try { +            ITelephony service = getITelephony(); +            if (service != null) { +                return service.isDataEnabledForReason(subId, reason); +            } else { +                throw new IllegalStateException("telephony service is null."); +            } +        } catch (RemoteException ex) { +            Log.e(TAG, "Telephony#isDataEnabledForReason RemoteException", ex); +            ex.rethrowFromSystemServer();          } +        return false;      }      /** @@ -11203,10 +11322,14 @@ public class TelephonyManager {       *   <LI>And possibly others.</LI>       * </UL>       * @return {@code true} if the overall data connection is allowed; {@code false} if not. -     * @hide +     * <p>Requires Permission: +     * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} or +     * {@link android.Manifest.permission#ACCESS_NETWORK_STATE} or +     * android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE       */ -    @SystemApi -    @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) +    @RequiresPermission(anyOf = {android.Manifest.permission.ACCESS_NETWORK_STATE, +            android.Manifest.permission.READ_PHONE_STATE, +            android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE})      public boolean isDataConnectionAllowed() {          boolean retVal = false;          try { diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 61c22bb09753..79456360c377 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -975,13 +975,6 @@ 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.       *       * TODO: remove and use isUserDataEnabled. @@ -1002,12 +995,29 @@ interface ITelephony {      boolean isUserDataEnabled(int subId);      /** -     * Get the overall enabled state of Mobile Data. -     * +     * Check if data is enabled on the device. It can be disabled by +     * user, carrier, policy or thermal.       * @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 setDataEnabledForReason(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 isDataEnabledForReason(int subId, int reason); +       /**       * Checks if manual network selection is allowed.       * @@ -1605,15 +1615,6 @@ 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       * @param subId the subscription ID that this action applies to. @@ -1651,14 +1652,6 @@ interface ITelephony {      void setCallWaitingStatus(int subId, boolean enabled, IIntegerConsumer callback);      /** -     * 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.       * @param callingPackage package making the call.  |