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

Commit 248a6207 authored by Daniel Bright's avatar Daniel Bright Committed by Automerger Merge Worker
Browse files

Merge "Add CAPABILITY_ALLOWED_NETWORK_TYPES_USED" am: 9816c0ce

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I2a0c4293a20daae9ac8efd24b9f96dba1db26581
parents f86b2497 9816c0ce
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -10607,6 +10607,7 @@ package android.telephony {
    field public static final int CALL_WAITING_STATUS_ENABLED = 1; // 0x1
    field public static final int CALL_WAITING_STATUS_NOT_SUPPORTED = 4; // 0x4
    field public static final int CALL_WAITING_STATUS_UNKNOWN_ERROR = 3; // 0x3
    field public static final String CAPABILITY_ALLOWED_NETWORK_TYPES_USED = "CAPABILITY_ALLOWED_NETWORK_TYPES_USED";
    field public static final String CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE = "CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE";
    field public static final int CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES = -2; // 0xfffffffe
    field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
+0 −53
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.telephony;

import android.util.ArraySet;

/**
 * Contains the set of supported capabilities that the Radio Interface supports on this device.
 *
 * @hide
 */
public class RadioInterfaceCapabilities {

    private final ArraySet<String> mSupportedCapabilities;


    public RadioInterfaceCapabilities() {
        mSupportedCapabilities = new ArraySet<>();
    }

    /**
     * Marks a capability as supported
     *
     * @param capabilityName the name of the capability
     */
    public void addSupportedCapability(
            @TelephonyManager.RadioInterfaceCapability String capabilityName) {
        mSupportedCapabilities.add(capabilityName);
    }

    /**
     * Whether the capability is supported
     *
     * @param capabilityName the name of the capability
     */
    public boolean isSupported(String capabilityName) {
        return mSupportedCapabilities.contains(capabilityName);
    }
}
+45 −6
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.annotation.IntDef;
import android.annotation.LongDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresFeature;
import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
@@ -8125,6 +8126,11 @@ public class TelephonyManager {
     * <p>Requires Permission:
     * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the calling
     * app has carrier privileges (see {@link #hasCarrierPrivileges}).
     * <p>
     * If {@link android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported}
     * ({@link TelephonyManager#CAPABILITY_ALLOWED_NETWORK_TYPES_USED}) returns true, then
     * setAllowedNetworkTypesBitmap is used on the radio interface.  Otherwise,
     * setPreferredNetworkTypesBitmap is used instead.
     *
     * @param subId the id of the subscription to set the preferred network type for.
     * @param networkType the preferred network type
@@ -8156,6 +8162,11 @@ public class TelephonyManager {
     * <p>Requires Permission:
     * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the calling
     * app has carrier privileges (see {@link #hasCarrierPrivileges}).
     * <p>
     * If {@link android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported}
     * ({@link TelephonyManager#CAPABILITY_ALLOWED_NETWORK_TYPES_USED}) returns true, then
     * setAllowedNetworkTypesBitmap is used on the radio interface.  Otherwise,
     * setPreferredNetworkTypesBitmap is used instead.
     *
     * @param networkTypeBitmask The bitmask of preferred network types.
     * @return true on success; false on any failure.
@@ -8181,12 +8192,20 @@ public class TelephonyManager {
     * Set the allowed network types of the device. This is for carrier or privileged apps to
     * enable/disable certain network types on the device. The user preferred network types should
     * be set through {@link #setPreferredNetworkTypeBitmask}.
     * <p>
     * If {@link android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported}
     * ({@link TelephonyManager#CAPABILITY_ALLOWED_NETWORK_TYPES_USED}) returns true, then
     * setAllowedNetworkTypesBitmap is used on the radio interface.  Otherwise,
     * setPreferredNetworkTypesBitmap is used instead.
     *
     * @param allowedNetworkTypes The bitmask of allowed network types.
     * @return true on success; false on any failure.
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    @RequiresFeature(
            enforcement = "android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported",
            value = TelephonyManager.CAPABILITY_ALLOWED_NETWORK_TYPES_USED)
    @SystemApi
    public boolean setAllowedNetworkTypes(@NetworkTypeBitMask long allowedNetworkTypes) {
        try {
@@ -8225,12 +8244,12 @@ public class TelephonyManager {
     * {@link #ALLOWED_NETWORK_TYPES_REASON_POWER}
     * </ol>
     * This API will result in allowing an intersection of allowed network types for all reasons,
     * including the configuration done through {@link setAllowedNetworkTypes}.
     * While this API and {@link setAllowedNetworkTypes} is controlling allowed network types
     * on device, user preference will still be set through {@link #setPreferredNetworkTypeBitmask}.
     * Thus resultant network type configured on modem will be an intersection of the network types
     * from setAllowedNetworkTypesForReason, {@link setAllowedNetworkTypes}
     * and {@link #setPreferredNetworkTypeBitmask}.
     * including the configuration done through other reasons.
     * <p>
     * If {@link android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported}
     * ({@link TelephonyManager#CAPABILITY_ALLOWED_NETWORK_TYPES_USED}) returns true, then
     * setAllowedNetworkTypesBitmap is used on the radio interface.  Otherwise,
     * setPreferredNetworkTypesBitmap is used instead.
     *
     * @param reason the reason the allowed network type change is taking place
     * @param allowedNetworkTypes The bitmask of allowed network types.
@@ -8239,6 +8258,9 @@ public class TelephonyManager {
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    @RequiresFeature(
            enforcement = "android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported",
            value = TelephonyManager.CAPABILITY_ALLOWED_NETWORK_TYPES_USED)
    public void setAllowedNetworkTypesForReason(@AllowedNetworkTypesReason int reason,
            @NetworkTypeBitMask long allowedNetworkTypes) {
        if (reason != ALLOWED_NETWORK_TYPES_REASON_POWER) {
@@ -8276,6 +8298,9 @@ public class TelephonyManager {
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
    @RequiresFeature(
            enforcement = "android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported",
            value = TelephonyManager.CAPABILITY_ALLOWED_NETWORK_TYPES_USED)
    public @NetworkTypeBitMask long getAllowedNetworkTypesForReason(
            @AllowedNetworkTypesReason int reason) {
        if (reason != ALLOWED_NETWORK_TYPES_REASON_POWER) {
@@ -14354,10 +14379,24 @@ public class TelephonyManager {
    public static final String CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE =
            "CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE";
    /**
     * Indicates whether {@link #setPreferredNetworkType}, {@link
     * #setPreferredNetworkTypeBitmask}, {@link #setAllowedNetworkTypes} and
     * {@link #setAllowedNetworkTypesForReason} rely on
     * setAllowedNetworkTypesBitmap instead of setPreferredNetworkTypesBitmap on the radio
     * interface.
     *
     * @hide
     */
    @SystemApi
    public static final String CAPABILITY_ALLOWED_NETWORK_TYPES_USED =
            "CAPABILITY_ALLOWED_NETWORK_TYPES_USED";
    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @StringDef(prefix = "CAPABILITY_", value = {
            CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE,
            CAPABILITY_ALLOWED_NETWORK_TYPES_USED,
    })
    public @interface RadioInterfaceCapability {}