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

Commit 16359f38 authored by Hall Liu's avatar Hall Liu
Browse files

Expose the carrier signaling broadcasts

Expose broadcasts for communicating certain changes in state between
Telephony and carrier apps.

Implement a backward-compatibility layer to support carrier apps
targeting <=R that are listening to the old hidden broadcasts.

Fixes: 173050428
Test: atest CarrierSignalTest CarrierSignalAgentTest
Change-Id: I15d032ee1e31d9be847c2f084161f8555c8172c1
parent 41ffb5e0
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -46821,6 +46821,11 @@ package android.telephony {
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void switchMultiSimConfig(int);
    method public void updateAvailableNetworks(@NonNull java.util.List<android.telephony.AvailableNetworkInfo>, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
    field public static final String ACTION_CARRIER_MESSAGING_CLIENT_SERVICE = "android.telephony.action.CARRIER_MESSAGING_CLIENT_SERVICE";
    field public static final String ACTION_CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE = "android.telephony.action.CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE";
    field public static final String ACTION_CARRIER_SIGNAL_PCO_VALUE = "android.telephony.action.CARRIER_SIGNAL_PCO_VALUE";
    field public static final String ACTION_CARRIER_SIGNAL_REDIRECTED = "android.telephony.action.CARRIER_SIGNAL_REDIRECTED";
    field public static final String ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED = "android.telephony.action.CARRIER_SIGNAL_REQUEST_NETWORK_FAILED";
    field public static final String ACTION_CARRIER_SIGNAL_RESET = "android.telephony.action.CARRIER_SIGNAL_RESET";
    field public static final String ACTION_CONFIGURE_VOICEMAIL = "android.telephony.action.CONFIGURE_VOICEMAIL";
    field public static final String ACTION_MULTI_SIM_CONFIG_CHANGED = "android.telephony.action.MULTI_SIM_CONFIG_CHANGED";
    field public static final String ACTION_NETWORK_COUNTRY_CHANGED = "android.telephony.action.NETWORK_COUNTRY_CHANGED";
@@ -46863,16 +46868,23 @@ package android.telephony {
    field public static final int ERI_OFF = 1; // 0x1
    field public static final int ERI_ON = 0; // 0x0
    field public static final String EXTRA_ACTIVE_SIM_SUPPORTED_COUNT = "android.telephony.extra.ACTIVE_SIM_SUPPORTED_COUNT";
    field public static final String EXTRA_APN_PROTOCOL = "android.telephony.extra.APN_PROTOCOL";
    field public static final String EXTRA_APN_TYPE = "android.telephony.extra.APN_TYPE";
    field public static final String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT";
    field public static final String EXTRA_CARRIER_ID = "android.telephony.extra.CARRIER_ID";
    field public static final String EXTRA_CARRIER_NAME = "android.telephony.extra.CARRIER_NAME";
    field public static final String EXTRA_DATA_FAIL_CAUSE = "android.telephony.extra.DATA_FAIL_CAUSE";
    field public static final String EXTRA_DEFAULT_NETWORK_AVAILABLE = "android.telephony.extra.DEFAULT_NETWORK_AVAILABLE";
    field public static final String EXTRA_HIDE_PUBLIC_SETTINGS = "android.telephony.extra.HIDE_PUBLIC_SETTINGS";
    field @Deprecated public static final String EXTRA_INCOMING_NUMBER = "incoming_number";
    field public static final String EXTRA_IS_REFRESH = "android.telephony.extra.IS_REFRESH";
    field public static final String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT";
    field public static final String EXTRA_NETWORK_COUNTRY = "android.telephony.extra.NETWORK_COUNTRY";
    field public static final String EXTRA_NOTIFICATION_COUNT = "android.telephony.extra.NOTIFICATION_COUNT";
    field public static final String EXTRA_PCO_ID = "android.telephony.extra.PCO_ID";
    field public static final String EXTRA_PCO_VALUE = "android.telephony.extra.PCO_VALUE";
    field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telephony.extra.PHONE_ACCOUNT_HANDLE";
    field public static final String EXTRA_REDIRECTION_URL = "android.telephony.extra.REDIRECTION_URL";
    field public static final String EXTRA_SPECIFIC_CARRIER_ID = "android.telephony.extra.SPECIFIC_CARRIER_ID";
    field public static final String EXTRA_SPECIFIC_CARRIER_NAME = "android.telephony.extra.SPECIFIC_CARRIER_NAME";
    field public static final String EXTRA_STATE = "state";
+20 −5
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.Intent;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.text.TextUtils;
import android.util.Log;

@@ -85,8 +86,8 @@ public class CustomConfigLoader {
                case TelephonyManager.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED:
                    configs = b.getStringArray(CarrierConfigManager
                            .KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY);
                    arg1 = intent.getStringExtra(TelephonyManager.EXTRA_APN_TYPE);
                    arg2 = intent.getStringExtra(TelephonyManager.EXTRA_ERROR_CODE);
                    arg1 = String.valueOf(intent.getIntExtra(TelephonyManager.EXTRA_APN_TYPE, -1));
                    arg2 = intent.getStringExtra(TelephonyManager.EXTRA_DATA_FAIL_CAUSE);
                    break;
                case TelephonyManager.ACTION_CARRIER_SIGNAL_RESET:
                    configs = b.getStringArray(CarrierConfigManager
@@ -141,10 +142,24 @@ public class CustomConfigLoader {
            // case 1
            actionStr = splitStr[0];
        } else if (splitStr.length == 2 && arg1 != null && arg2 != null) {
            // case 2
            // case 2. The only thing that uses this is CARRIER_SIGNAL_REQUEST_NETWORK_FAILED,
            // and the carrier config for that can provide either an int or string for the apn type,
            // depending on when it was introduced. Therefore, return a positive match if either
            // the int version or the string version of the apn type in the broadcast matches.
            String apnInIntFormat = arg1;
            String apnInStringFormat = null;
            try {
                int apnInt = Integer.parseInt(apnInIntFormat);
                apnInStringFormat = ApnSetting.getApnTypeString(apnInt);
            } catch (NumberFormatException e) {
                Log.e(TAG, "Got invalid apn type from broadcast: " + apnInIntFormat);
            }

            String[] args = splitStr[0].split(INTRA_GROUP_DELIMITER);
            if (args.length == 2 && TextUtils.equals(arg1, args[0]) &&
                    TextUtils.equals(arg2, args[1])) {
            boolean doesArg1Match = TextUtils.equals(apnInIntFormat, args[0])
                    || (apnInStringFormat != null && TextUtils.equals(apnInStringFormat, args[0]));
            if (args.length == 2 && doesArg1Match
                    && TextUtils.equals(arg2, args[1])) {
                actionStr = splitStr[1];
            }
        } else if ((splitStr.length == 2) && (arg1 != null) && (arg2 == null)) {
+2 −3
Original line number Diff line number Diff line
@@ -1881,9 +1881,8 @@ public class CarrierConfigManager {
     *     "APN_1, ERROR_CODE_1 : CARRIER_ACTION_IDX_1, CARRIER_ACTION_IDX_2...",
     *     "APN_1, ERROR_CODE_2 : CARRIER_ACTION_IDX_1 "
     * }
     * Where {@code APN_1} is a string defined in
     * com.android.internal.telephony.PhoneConstants
     * Example: "default"
     * Where {@code APN_1} is an integer defined in {@link android.telephony.data.ApnSetting}
     * (e.g. {@link android.telephony.data.ApnSetting#TYPE_DEFAULT}
     *
     * {@code ERROR_CODE_1} is an integer defined in android.telephony.DataFailCause
     * Example:
+91 −111
Original line number Diff line number Diff line
@@ -1574,177 +1574,157 @@ public class TelephonyManager {
            "android.telephony.extra.PHONE_IN_ECM_STATE";
    /**
     * <p>Broadcast Action: when data connections get redirected with validation failure.
     * intended for sim/account status checks and only sent to the specified carrier app
     * The intent will have the following extra values:</p>
     * Broadcast action sent when a data connection is redirected with validation failure.
     *
     * This action is intended for sim/account status checks and only sent to the carrier apps
     * specified in the carrier config for the subscription ID that's attached to this intent.
     *
     * The intent will have the following extra values:
     * <ul>
     *   <li>{@link #EXTRA_APN_TYPE}</li><dd>A string with the apn type.</dd>
     *   <li>{@link #EXTRA_APN_TYPE_INT}</li><dd>A integer with the apn type.</dd>
     *   <li>{@link #EXTRA_REDIRECTION_URL}</li><dd>redirection url string</dd>
     *   <li>subId</li><dd>Sub Id which associated the data connection failure.</dd>
     *   <li>{@link #EXTRA_APN_TYPE}</li><dd>An integer indicating the apn type.</dd>
     *   <li>{@link #EXTRA_REDIRECTION_URL}</li><dd>A string indicating the redirection url</dd>
     *   <li>{@link SubscriptionManager#EXTRA_SUBSCRIPTION_INDEX}</li>
     *          <dd>The subscription ID on which the validation failure happened.</dd>
     * </ul>
     * <p class="note">This is a protected intent that can only be sent by the system.</p>
     * @hide
     */
    @SuppressLint("ActionValue")
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    public static final String ACTION_CARRIER_SIGNAL_REDIRECTED =
            "com.android.internal.telephony.CARRIER_SIGNAL_REDIRECTED";
            "android.telephony.action.CARRIER_SIGNAL_REDIRECTED";
    /**
     * <p>Broadcast Action: when data connections setup fails.
     * intended for sim/account status checks and only sent to the specified carrier app
     * The intent will have the following extra values:</p>
     * Broadcast action sent when a data connection setup fails.
     *
     * This action is intended for sim/account status checks and only sent to the carrier apps
     * specified in the carrier config for the subscription ID that's attached to this intent.
     *
     * The intent will have the following extra values:
     * <ul>
     *   <li>{@link #EXTRA_APN_TYPE}</li><dd>A string with the apn type.</dd>
     *   <li>{@link #EXTRA_APN_TYPE_INT}</li><dd>A integer with the apn type.</dd>
     *   <li>{@link #EXTRA_ERROR_CODE}</li><dd>A integer with dataFailCause.</dd>
     *   <li>subId</li><dd>Sub Id which associated the data connection failure.</dd>
     *   <li>{@link #EXTRA_APN_TYPE}</li><dd>An integer indicating the apn type.</dd>
     *   <li>{@link #EXTRA_DATA_FAIL_CAUSE}</li><dd>A integer indicating the data fail cause.</dd>
     *   <li>{@link SubscriptionManager#EXTRA_SUBSCRIPTION_INDEX}</li>
     *          <dd>The subscription ID on which the data setup failure happened.</dd>
     * </ul>
     * <p class="note">This is a protected intent that can only be sent by the system. </p>
     * @hide
     */
    @SuppressLint("ActionValue")
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    public static final String ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED =
            "com.android.internal.telephony.CARRIER_SIGNAL_REQUEST_NETWORK_FAILED";
            "android.telephony.action.CARRIER_SIGNAL_REQUEST_NETWORK_FAILED";
    /**
     * <p>Broadcast Action: when pco value is available.
     * intended for sim/account status checks and only sent to the specified carrier app
     * Broadcast action sent when a PCO value becomes available from the modem.
     *
     * This action is intended for sim/account status checks and only sent to the carrier apps
     * specified in the carrier config for the subscription ID that's attached to this intent.
     *
     * The intent will have the following extra values:</p>
     * <ul>
     *   <li>{@link #EXTRA_APN_TYPE}</li><dd>A string with the apn type.</dd>
     *   <li>{@link #EXTRA_APN_TYPE_INT}</li><dd>A integer with the apn type.</dd>
     *   <li>{@link #EXTRA_APN_PROTOCOL}</li><dd>A string with the protocol of the apn connection
     *      (IP,IPV6, IPV4V6)</dd>
     *   <li>{@link #EXTRA_APN_PROTOCOL_INT}</li><dd>A integer with the protocol of the apn
     *      connection (IP,IPV6, IPV4V6)</dd>
     *   <li>{@link #EXTRA_PCO_ID}</li><dd>An integer indicating the pco id for the data.</dd>
     *   <li>{@link #EXTRA_PCO_VALUE}</li><dd>A byte array of pco data read from modem.</dd>
     *   <li>subId</li><dd>Sub Id which associated the data connection.</dd>
     *   <li>{@link #EXTRA_APN_TYPE}</li><dd>An integer indicating the apn type.</dd>
     *   <li>{@link #EXTRA_APN_PROTOCOL}</li><dd>An integer indicating the protocol of the apn
     *      connection</dd>
     *   <li>{@link #EXTRA_PCO_ID}</li><dd>An integer indicating the PCO id for the data.</dd>
     *   <li>{@link #EXTRA_PCO_VALUE}</li><dd>A byte array of PCO data read from modem.</dd>
     *   <li>{@link SubscriptionManager#EXTRA_SUBSCRIPTION_INDEX}</li>
     *          <dd>The subscription ID for which the PCO info was received.</dd>
     * </ul>
     * <p class="note">This is a protected intent that can only be sent by the system. </p>
     * @hide
     */
    @SuppressLint("ActionValue")
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    public static final String ACTION_CARRIER_SIGNAL_PCO_VALUE =
            "com.android.internal.telephony.CARRIER_SIGNAL_PCO_VALUE";
            "android.telephony.action.CARRIER_SIGNAL_PCO_VALUE";
    /**
     * <p>Broadcast Action: when system default network available/unavailable with
     * carrier-disabled mobile data. Intended for carrier apps to set/reset carrier actions when
     * other network becomes system default network, Wi-Fi for example.
     * Broadcast action sent when the availability of the system default network changes.
     *
     * @see ConnectivityManager#registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback)
     *
     * This action is intended for carrier apps to set/reset carrier actions. It is only sent to the
     * carrier apps specified in the carrier config for the subscription ID attached to this intent.
     *
     * The intent will have the following extra values:</p>
     * <ul>
     *   <li>{@link #EXTRA_DEFAULT_NETWORK_AVAILABLE}</li>
     *   <dd>A boolean indicates default network available.</dd>
     *   <li>subId</li><dd>Sub Id which associated the default data.</dd>
     *   <dd>{@code true} if the default network is now available, {@code false} otherwise.</dd>
     *   <li>{@link SubscriptionManager#EXTRA_SUBSCRIPTION_INDEX}</li>
     *          <dd>The subscription ID on which the default network availability changed.</dd>
     * </ul>
     * <p class="note">This is a protected intent that can only be sent by the system. </p>
     * @hide
     */
    @SuppressLint("ActionValue")
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    public static final String ACTION_CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE =
            "com.android.internal.telephony.CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE";
            "android.telephony.action.CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE";
    /**
     * <p>Broadcast Action: when framework reset all carrier actions on sim load or absent.
     * intended for carrier apps clean up (clear UI e.g.) and only sent to the specified carrier app
     * Broadcast action sent when carrier apps should reset their internal state.
     *
     * Sent when certain events such as turning on/off mobile data, removing the SIM, etc. require
     * carrier apps to reset their state.
     *
     * This action is intended to signal carrier apps to perform cleanup operations. It is only sent
     * to the carrier apps specified in the carrier config for the subscription ID attached to
     * this intent.
     *
     * The intent will have the following extra values:</p>
     * <ul>
     *   <li>subId</li><dd>Sub Id which associated the data connection failure.</dd>
     *   <li>{@link SubscriptionManager#EXTRA_SUBSCRIPTION_INDEX}</li>
     *          <dd>The subscription ID for which state should be reset.</dd>
     * </ul>
     * <p class="note">This is a protected intent that can only be sent by the system.</p>
     * @hide
     */
    @SuppressLint("ActionValue")
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    public static final String ACTION_CARRIER_SIGNAL_RESET =
            "com.android.internal.telephony.CARRIER_SIGNAL_RESET";
    // CARRIER_SIGNAL_ACTION extra keys
    /**
     *  An string extra of redirected url upon {@link #ACTION_CARRIER_SIGNAL_REDIRECTED}.
     *  @hide
     */
    @SuppressLint("ActionValue")
    public static final String EXTRA_REDIRECTION_URL = "redirectionUrl";
            "android.telephony.action.CARRIER_SIGNAL_RESET";
    /**
     *  An integer extra of error code upon {@link #ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED}.
     *  Check {@link DataFailCause} for all possible values.
     *  @hide
     * String extra containing the redirection URL sent with
     * {@link #ACTION_CARRIER_SIGNAL_REDIRECTED}.
     */
    @SuppressLint("ActionValue")
    public static final String EXTRA_ERROR_CODE = "errorCode";
    public static final String EXTRA_REDIRECTION_URL = "android.telephony.extra.REDIRECTION_URL";
    /**
     *  An string extra of corresponding apn type upon
     *  {@link #ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED},
     *  {@link #ACTION_CARRIER_SIGNAL_REDIRECTED} and
     *  {@link #ACTION_CARRIER_SIGNAL_PCO_VALUE} broadcasts.
     *  @deprecated This is kept for backward compatibility reason. Use {@link #EXTRA_APN_TYPE_INT}
     *  instead.
     * An integer extra containing the data fail cause.
     *
     *  @hide
     * Sent with {@link #ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED}. See {@link DataFailCause}
     * for a list of possible values.
     */
    @Deprecated
    @SuppressLint("ActionValue")
    public static final String EXTRA_APN_TYPE = "apnType";
    public static final String EXTRA_DATA_FAIL_CAUSE = "android.telephony.extra.DATA_FAIL_CAUSE";
    /**
     *  An string integer of corresponding apn type upon
     *  {@link #ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED},
     *  {@link #ACTION_CARRIER_SIGNAL_REDIRECTED} and
     *  {@link #ACTION_CARRIER_SIGNAL_PCO_VALUE} broadcasts.
     *  Check {@link ApnSetting} TYPE_* for its values.
     *  @hide
     */
    @SuppressLint("ActionValue")
    public static final String EXTRA_APN_TYPE_INT = "apnTypeInt";
    /**
     *  An string extra with the protocol of the apn connection (IP,IPV6, IPV4V6) upon
     *  {@link #ACTION_CARRIER_SIGNAL_PCO_VALUE} broadcasts.
     *  @deprecated This is kept for backward compatibility reason.
     *  Use {@link #EXTRA_APN_PROTOCOL_INT} instead.
     * An integer extra containing the APN type.
     *
     *  @hide
     * Sent with the  {@link #ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED},
     * {@link #ACTION_CARRIER_SIGNAL_REDIRECTED}, and {@link #ACTION_CARRIER_SIGNAL_PCO_VALUE}
     * broadcasts.
     * See the {@code TYPE_} constants in {@link ApnSetting} for a list of possible values.
     */
    @Deprecated
    @SuppressLint("ActionValue")
    public static final String EXTRA_APN_PROTOCOL = "apnProto";
    public static final String EXTRA_APN_TYPE = "android.telephony.extra.APN_TYPE";
    /**
     *  An integer extra with the protocol of the apn connection (IP,IPV6, IPV4V6) upon
     *  {@link #ACTION_CARRIER_SIGNAL_PCO_VALUE} broadcasts.
     *  Check {@link ApnSetting} PROTOCOL_* for its values.
     *  @hide
     * An integer extra containing the protocol of the apn connection.
     *
     * Sent with the {@link #ACTION_CARRIER_SIGNAL_PCO_VALUE} broadcast.
     * See the {@code PROTOCOL_*} constants in {@link ApnSetting} for a list of possible values.
     */
    @SuppressLint("ActionValue")
    public static final String EXTRA_APN_PROTOCOL_INT = "apnProtoInt";
    public static final String EXTRA_APN_PROTOCOL = "android.telephony.extra.APN_PROTOCOL";
    /**
     *  An integer extra indicating the pco id for the data upon
     *  {@link #ACTION_CARRIER_SIGNAL_PCO_VALUE} broadcasts.
     *  @hide
     * An integer extra indicating the ID for the PCO data.
     * Sent with the {@link #ACTION_CARRIER_SIGNAL_PCO_VALUE} broadcast.
     */
    @SuppressLint("ActionValue")
    public static final String EXTRA_PCO_ID = "pcoId";
    public static final String EXTRA_PCO_ID = "android.telephony.extra.PCO_ID";
    /**
     *  An extra of byte array of pco data read from modem upon
     *  {@link #ACTION_CARRIER_SIGNAL_PCO_VALUE} broadcasts.
     *  @hide
     * A byte array extra containing PCO data read from the modem.
     * Sent with the {@link #ACTION_CARRIER_SIGNAL_PCO_VALUE} broadcast.
     */
    @SuppressLint("ActionValue")
    public static final String EXTRA_PCO_VALUE = "pcoValue";
    public static final String EXTRA_PCO_VALUE = "android.telephony.extra.PCO_VALUE";
    /**
     *  An boolean extra indicating default network available upon
     *  {@link #ACTION_CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE} broadcasts.
     *  @hide
     * A boolean extra indicating the availability of the default network.
     * Sent with the {@link #ACTION_CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE} broadcast.
     */
    @SuppressLint("ActionValue")
    public static final String EXTRA_DEFAULT_NETWORK_AVAILABLE = "defaultNetworkAvailable";
    public static final String EXTRA_DEFAULT_NETWORK_AVAILABLE =
            "android.telephony.extra.DEFAULT_NETWORK_AVAILABLE";
    /**
     * <p>Broadcast Action: The emergency call state is changed.
+103 −0
Original line number Diff line number Diff line
@@ -321,4 +321,107 @@ public class TelephonyIntents {
     */
    public static final String ACTION_USER_ACTIVITY_NOTIFICATION =
            "android.intent.action.USER_ACTIVITY_NOTIFICATION";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#ACTION_CARRIER_SIGNAL_REDIRECTED
     */
    @Deprecated
    public static final String ACTION_CARRIER_SIGNAL_REDIRECTED =
            "com.android.internal.telephony.CARRIER_SIGNAL_REDIRECTED";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
     */
    @Deprecated
    public static final String ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED =
            "com.android.internal.telephony.CARRIER_SIGNAL_REQUEST_NETWORK_FAILED";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#ACTION_CARRIER_SIGNAL_PCO_VALUE
     */
    @Deprecated
    public static final String ACTION_CARRIER_SIGNAL_PCO_VALUE =
            "com.android.internal.telephony.CARRIER_SIGNAL_PCO_VALUE";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#ACTION_CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE
     */
    @Deprecated
    public static final String ACTION_CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE =
            "com.android.internal.telephony.CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#ACTION_CARRIER_SIGNAL_RESET
     */
    @Deprecated
    public static final String ACTION_CARRIER_SIGNAL_RESET =
            "com.android.internal.telephony.CARRIER_SIGNAL_RESET";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#EXTRA_REDIRECTION_URL
     */
    @Deprecated
    public static final String EXTRA_REDIRECTION_URL = "redirectionUrl";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#EXTRA_DATA_FAIL_CAUSE
     */
    @Deprecated
    public static final String EXTRA_ERROR_CODE = "errorCode";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#EXTRA_APN_TYPE
     */
    @Deprecated
    public static final String EXTRA_APN_TYPE = "apnType";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#EXTRA_APN_TYPE
     */
    @Deprecated
    public static final String EXTRA_APN_TYPE_INT = "apnTypeInt";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#EXTRA_APN_PROTOCOL
     */
    @Deprecated
    public static final String EXTRA_APN_PROTOCOL = "apnProto";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#EXTRA_APN_PROTOCOL
     */
    @Deprecated
    public static final String EXTRA_APN_PROTOCOL_INT = "apnProtoInt";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#EXTRA_PCO_ID
     */
    @Deprecated
    public static final String EXTRA_PCO_ID = "pcoId";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#EXTRA_PCO_VALUE
     */
    @Deprecated
    public static final String EXTRA_PCO_VALUE = "pcoValue";

    /**
     * Kept for backwards compatibility.
     * @deprecated @see TelephonyManager#EXTRA_DEFAULT_NETWORK_AVAILABLE
     */
    @Deprecated
    public static final String EXTRA_DEFAULT_NETWORK_AVAILABLE = "defaultNetworkAvailable";
}