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

Commit 2f7dc20d authored by Daniel Bright's avatar Daniel Bright Committed by Android (Google) Code Review
Browse files

Merge "Make string version of APN_TYPEs a @SystemApi"

parents 5070ebc9 8bb56fc8
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -10953,6 +10953,23 @@ package android.telephony.cdma {
package android.telephony.data {
  public class ApnSetting implements android.os.Parcelable {
    method @NonNull public static String getApnTypesStringFromBitmask(int);
    field public static final String TYPE_ALL_STRING = "*";
    field public static final String TYPE_CBS_STRING = "cbs";
    field public static final String TYPE_DEFAULT_STRING = "default";
    field public static final String TYPE_DUN_STRING = "dun";
    field public static final String TYPE_EMERGENCY_STRING = "emergency";
    field public static final String TYPE_FOTA_STRING = "fota";
    field public static final String TYPE_HIPRI_STRING = "hipri";
    field public static final String TYPE_IA_STRING = "ia";
    field public static final String TYPE_IMS_STRING = "ims";
    field public static final String TYPE_MCX_STRING = "mcx";
    field public static final String TYPE_MMS_STRING = "mms";
    field public static final String TYPE_SUPL_STRING = "supl";
    field public static final String TYPE_XCAP_STRING = "xcap";
  }
  public final class DataCallResponse implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<android.net.LinkAddress> getAddresses();
+2 −33
Original line number Diff line number Diff line
@@ -2413,43 +2413,12 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
        Intent intent = new Intent(ACTION_ANY_DATA_CONNECTION_STATE_CHANGED);
        intent.putExtra(PHONE_CONSTANTS_STATE_KEY, dataStateToString(state));
        intent.putExtra(PHONE_CONSTANTS_DATA_APN_KEY, apn);
        intent.putExtra(PHONE_CONSTANTS_DATA_APN_TYPE_KEY, getApnTypesStringFromBitmask(apnType));
        intent.putExtra(PHONE_CONSTANTS_DATA_APN_TYPE_KEY,
                ApnSetting.getApnTypesStringFromBitmask(apnType));
        intent.putExtra(PHONE_CONSTANTS_SUBSCRIPTION_KEY, subId);
        mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
    }

    private static final Map<Integer, String> APN_TYPE_INT_MAP;
    static {
        APN_TYPE_INT_MAP = new android.util.ArrayMap<Integer, String>();
        APN_TYPE_INT_MAP.put(ApnSetting.TYPE_DEFAULT, "default");
        APN_TYPE_INT_MAP.put(ApnSetting.TYPE_MMS, "mms");
        APN_TYPE_INT_MAP.put(ApnSetting.TYPE_SUPL, "supl");
        APN_TYPE_INT_MAP.put(ApnSetting.TYPE_DUN, "dun");
        APN_TYPE_INT_MAP.put(ApnSetting.TYPE_HIPRI, "hipri");
        APN_TYPE_INT_MAP.put(ApnSetting.TYPE_FOTA, "fota");
        APN_TYPE_INT_MAP.put(ApnSetting.TYPE_IMS, "ims");
        APN_TYPE_INT_MAP.put(ApnSetting.TYPE_CBS, "cbs");
        APN_TYPE_INT_MAP.put(ApnSetting.TYPE_IA, "ia");
        APN_TYPE_INT_MAP.put(ApnSetting.TYPE_EMERGENCY, "emergency");
        APN_TYPE_INT_MAP.put(ApnSetting.TYPE_MCX, "mcx");
        APN_TYPE_INT_MAP.put(ApnSetting.TYPE_XCAP, "xcap");
    }

    /**
     * Copy of ApnSetting#getApnTypesStringFromBitmask for legacy broadcast.
     * @param apnTypeBitmask bitmask of APN types.
     * @return comma delimited list of APN types.
     */
    private static String getApnTypesStringFromBitmask(int apnTypeBitmask) {
        List<String> types = new ArrayList<>();
        for (Integer type : APN_TYPE_INT_MAP.keySet()) {
            if ((apnTypeBitmask & type) == type) {
                types.add(APN_TYPE_INT_MAP.get(type));
            }
        }
        return android.text.TextUtils.join(",", types);
    }

    private void enforceNotifyPermissionOrCarrierPrivilege(String method) {
        if (checkNotifyPermission()) {
            return;
+122 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.telephony.data;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.content.ContentValues;
import android.database.Cursor;
import android.hardware.radio.V1_5.ApnTypes;
@@ -28,13 +29,14 @@ import android.provider.Telephony;
import android.provider.Telephony.Carriers;
import android.telephony.Annotation.ApnType;
import android.telephony.Annotation.NetworkType;
import com.android.telephony.Rlog;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;

import com.android.telephony.Rlog;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.net.InetAddress;
@@ -123,6 +125,122 @@ public class ApnSetting implements Parcelable {
    /** Authentication type for PAP or CHAP. */
    public static final int AUTH_TYPE_PAP_OR_CHAP = 3;

    /**
     * APN types for data connections.  These are usage categories for an APN
     * entry.  One APN entry may support multiple APN types, eg, a single APN
     * may service regular internet traffic ("default") as well as MMS-specific
     * connections.<br/>
     * APN_TYPE_ALL is a special type to indicate that this APN entry can
     * service all data connections.
     * <p>
     * Note: The goal is to deprecate this.  Due to the Carrier Table being used
     * directly, this isn't feasible right now.
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_ALL_STRING = "*";

    /**
     * APN type for default data traffic
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_DEFAULT_STRING = "default";


    /**
     * APN type for MMS traffic
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_MMS_STRING = "mms";


    /**
     * APN type for SUPL assisted GPS
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_SUPL_STRING = "supl";

    /**
     * APN type for DUN traffic
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_DUN_STRING = "dun";

    /**
     * APN type for HiPri traffic
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_HIPRI_STRING = "hipri";

    /**
     * APN type for FOTA
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_FOTA_STRING = "fota";

    /**
     * APN type for IMS
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_IMS_STRING = "ims";

    /**
     * APN type for CBS
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_CBS_STRING = "cbs";

    /**
     * APN type for IA Initial Attach APN
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_IA_STRING = "ia";

    /**
     * APN type for Emergency PDN. This is not an IA apn, but is used
     * for access to carrier services in an emergency call situation.
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_EMERGENCY_STRING = "emergency";

    /**
     * APN type for Mission Critical Services
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_MCX_STRING = "mcx";

    /**
     * APN type for XCAP
     *
     * @hide
     */
    @SystemApi
    public static final String TYPE_XCAP_STRING = "xcap";


    /** @hide */
    @IntDef(prefix = { "AUTH_TYPE_" }, value = {
        AUTH_TYPE_NONE,
@@ -1289,10 +1407,13 @@ public class ApnSetting implements Parcelable {
    }

    /**
     * Converts the integer value of an APN type to the string version.
     * @param apnTypeBitmask bitmask of APN types.
     * @return comma delimited list of APN types.
     * @hide
     */
    @SystemApi
    @NonNull
    public static String getApnTypesStringFromBitmask(int apnTypeBitmask) {
        List<String> types = new ArrayList<>();
        for (Integer type : APN_TYPE_INT_MAP.keySet()) {
+14 −13
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
package com.android.internal.telephony;

import android.compat.annotation.UnsupportedAppUsage;
import android.telephony.data.ApnSetting;

/**
 * @hide
@@ -125,32 +126,32 @@ public class PhoneConstants {
     * APN_TYPE_ALL is a special type to indicate that this APN entry can
     * service all data connections.
     */
    public static final String APN_TYPE_ALL = "*";
    public static final String APN_TYPE_ALL = ApnSetting.TYPE_ALL_STRING;
    /** APN type for default data traffic */
    public static final String APN_TYPE_DEFAULT = "default";
    public static final String APN_TYPE_DEFAULT = ApnSetting.TYPE_DEFAULT_STRING;
    /** APN type for MMS traffic */
    public static final String APN_TYPE_MMS = "mms";
    public static final String APN_TYPE_MMS = ApnSetting.TYPE_MMS_STRING;
    /** APN type for SUPL assisted GPS */
    public static final String APN_TYPE_SUPL = "supl";
    public static final String APN_TYPE_SUPL = ApnSetting.TYPE_SUPL_STRING;
    /** APN type for DUN traffic */
    public static final String APN_TYPE_DUN = "dun";
    public static final String APN_TYPE_DUN = ApnSetting.TYPE_DUN_STRING;
    /** APN type for HiPri traffic */
    public static final String APN_TYPE_HIPRI = "hipri";
    public static final String APN_TYPE_HIPRI = ApnSetting.TYPE_HIPRI_STRING;
    /** APN type for FOTA */
    public static final String APN_TYPE_FOTA = "fota";
    public static final String APN_TYPE_FOTA = ApnSetting.TYPE_FOTA_STRING;
    /** APN type for IMS */
    public static final String APN_TYPE_IMS = "ims";
    public static final String APN_TYPE_IMS = ApnSetting.TYPE_IMS_STRING;
    /** APN type for CBS */
    public static final String APN_TYPE_CBS = "cbs";
    public static final String APN_TYPE_CBS = ApnSetting.TYPE_CBS_STRING;
    /** APN type for IA Initial Attach APN */
    public static final String APN_TYPE_IA = "ia";
    public static final String APN_TYPE_IA = ApnSetting.TYPE_IA_STRING;
    /** APN type for Emergency PDN. This is not an IA apn, but is used
     * for access to carrier services in an emergency call situation. */
    public static final String APN_TYPE_EMERGENCY = "emergency";
    public static final String APN_TYPE_EMERGENCY = ApnSetting.TYPE_EMERGENCY_STRING;
    /** APN type for Mission Critical Services */
    public static final String APN_TYPE_MCX = "mcx";
    public static final String APN_TYPE_MCX = ApnSetting.TYPE_MCX_STRING;
    /** APN type for XCAP */
    public static final String APN_TYPE_XCAP = "xcap";
    public static final String APN_TYPE_XCAP = ApnSetting.TYPE_XCAP_STRING;
    /** Array of all APN types */
    public static final String[] APN_TYPES = {APN_TYPE_DEFAULT,
            APN_TYPE_MMS,