Merge "Define FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION feature"

This commit is contained in:
Brad Ebinger
2021-02-04 00:38:15 +00:00
committed by Gerrit Code Review
4 changed files with 56 additions and 9 deletions

View File

@@ -2131,6 +2131,7 @@ package android.content.pm {
field public static final String FEATURE_INCREMENTAL_DELIVERY = "android.software.incremental_delivery"; field public static final String FEATURE_INCREMENTAL_DELIVERY = "android.software.incremental_delivery";
field public static final String FEATURE_REBOOT_ESCROW = "android.hardware.reboot_escrow"; field public static final String FEATURE_REBOOT_ESCROW = "android.hardware.reboot_escrow";
field public static final String FEATURE_TELEPHONY_CARRIERLOCK = "android.hardware.telephony.carrierlock"; field public static final String FEATURE_TELEPHONY_CARRIERLOCK = "android.hardware.telephony.carrierlock";
field public static final String FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION = "android.hardware.telephony.ims.singlereg";
field public static final int FLAGS_PERMISSION_RESERVED_PERMISSION_CONTROLLER = -268435456; // 0xf0000000 field public static final int FLAGS_PERMISSION_RESERVED_PERMISSION_CONTROLLER = -268435456; // 0xf0000000
field public static final int FLAG_PERMISSION_APPLY_RESTRICTION = 16384; // 0x4000 field public static final int FLAG_PERMISSION_APPLY_RESTRICTION = 16384; // 0x4000
field public static final int FLAG_PERMISSION_AUTO_REVOKED = 131072; // 0x20000 field public static final int FLAG_PERMISSION_AUTO_REVOKED = 131072; // 0x20000

View File

@@ -59,6 +59,7 @@ import android.content.res.XmlResourceParser;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.AdaptiveIconDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
@@ -71,6 +72,12 @@ import android.os.incremental.IncrementalManager;
import android.os.storage.StorageManager; import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo; import android.os.storage.VolumeInfo;
import android.permission.PermissionManager; import android.permission.PermissionManager;
import android.telephony.TelephonyManager;
import android.telephony.gba.GbaService;
import android.telephony.ims.ImsService;
import android.telephony.ims.ProvisioningManager;
import android.telephony.ims.RcsUceAdapter;
import android.telephony.ims.SipDelegateManager;
import android.util.AndroidException; import android.util.AndroidException;
import android.util.Log; import android.util.Log;
@@ -2601,6 +2608,37 @@ public abstract class PackageManager {
@SdkConstant(SdkConstantType.FEATURE) @SdkConstant(SdkConstantType.FEATURE)
public static final String FEATURE_TELEPHONY_IMS = "android.hardware.telephony.ims"; public static final String FEATURE_TELEPHONY_IMS = "android.hardware.telephony.ims";
/**
* Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device
* supports a single IMS registration as defined by carrier networks in the IMS service
* implementation using the {@link ImsService} API, {@link GbaService} API, and IRadio 1.6 HAL.
* <p>
* When set, the device must fully support the following APIs for an application to implement
* IMS single registration:
* <ul>
* <li> Updating RCS provisioning status using the {@link ProvisioningManager} API to supply an
* RCC.14 defined XML and notify IMS applications of Auto Configuration Server (ACS) or
* proprietary server provisioning updates.</li>
* <li>Opening a delegate in the device IMS service to forward SIP traffic to the carrier's
* network using the {@link SipDelegateManager} API</li>
* <li>Listening to EPS dedicated bearer establishment via the
* {@link ConnectivityManager#registerQosCallback}
* API to indicate to the application when to start/stop media traffic.</li>
* <li>Implementing Generic Bootstrapping Architecture (GBA) and providing the associated
* authentication keys to applications
* requesting this information via the {@link TelephonyManager#bootstrapAuthenticationRequest}
* API</li>
* <li>Implementing RCS User Capability Exchange using the {@link RcsUceAdapter} API</li>
* </ul>
* <p>
* This feature should only be defined if {@link #FEATURE_TELEPHONY_IMS} is also defined.
* @hide
*/
@SystemApi
@SdkConstant(SdkConstantType.FEATURE)
public static final String FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION =
"android.hardware.telephony.ims.singlereg";
/** /**
* Feature for {@link #getSystemAvailableFeatures} and * Feature for {@link #getSystemAvailableFeatures} and
* {@link #hasSystemFeature}: The device is capable of communicating with * {@link #hasSystemFeature}: The device is capable of communicating with

View File

@@ -25,6 +25,7 @@ import android.annotation.SdkConstant;
import android.annotation.StringDef; import android.annotation.StringDef;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.annotation.WorkerThread; import android.annotation.WorkerThread;
import android.content.pm.PackageManager;
import android.os.Binder; import android.os.Binder;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceSpecificException; import android.os.ServiceSpecificException;
@@ -1325,7 +1326,7 @@ public class ProvisioningManager {
* the RCS VoLTE single registration feature. Only default messaging application may receive * the RCS VoLTE single registration feature. Only default messaging application may receive
* the intent. * the intent.
* *
* <p>Contains {@link #EXTRA_SUBSCRIPTION_INDEX} to specify the subscription index for which * <p>Contains {@link #EXTRA_SUBSCRIPTION_ID} to specify the subscription index for which
* the intent is valid. and {@link #EXTRA_STATUS} to specify RCS VoLTE single registration * the intent is valid. and {@link #EXTRA_STATUS} to specify RCS VoLTE single registration
* status. * status.
*/ */
@@ -1371,7 +1372,7 @@ public class ProvisioningManager {
* provisioning is done using autoconfiguration, then these parameters shall be * provisioning is done using autoconfiguration, then these parameters shall be
* sent in the HTTP get request to fetch the RCS provisioning. RCS client * sent in the HTTP get request to fetch the RCS provisioning. RCS client
* configuration must be provided by the application before registering for the * configuration must be provided by the application before registering for the
* provisioning status events {@link #registerRcsProvisioningChangedCallback()} * provisioning status events {@link #registerRcsProvisioningChangedCallback}
* @param rcc RCS client configuration {@link RcsClientConfiguration} * @param rcc RCS client configuration {@link RcsClientConfiguration}
*/ */
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
@@ -1387,13 +1388,15 @@ public class ProvisioningManager {
} }
/** /**
* Returns a flag to indicate if the device software and the carrier * Returns a flag to indicate whether or not the device supports IMS single registration for
* have the capability to support RCS Volte single IMS registration. * MMTEL and RCS features as well as if the carrier has provisioned the feature.
* @return true if this single registration is capable, false otherwise * @return true if IMS single registration is capable at this time, or false otherwise
* @throws ImsException If the remote ImsService is not available for * @throws ImsException If the remote ImsService is not available for
* any reason or the subscription associated with this instance is no * any reason or the subscription associated with this instance is no
* longer active. See {@link ImsException#getCode()} for more * longer active. See {@link ImsException#getCode()} for more
* information. * information.
* @see PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION for whether or not this
* device supports IMS single registration.
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public boolean isRcsVolteSingleRegistrationCapable() throws ImsException { public boolean isRcsVolteSingleRegistrationCapable() throws ImsException {
@@ -1430,7 +1433,7 @@ public class ProvisioningManager {
* available. This can happen if the service crashed, for example. * available. This can happen if the service crashed, for example.
* It shall also throw this exception when the RCS client parameters for the * It shall also throw this exception when the RCS client parameters for the
* application are not valid. In that case application must set the client * application are not valid. In that case application must set the client
* params (See {@link #setRcsClientConfiguration()}) and re register the * params (See {@link #setRcsClientConfiguration}) and re register the
* callback. * callback.
* See {@link ImsException#getCode()} for a more detailed reason. * See {@link ImsException#getCode()} for a more detailed reason.
*/ */
@@ -1458,9 +1461,9 @@ public class ProvisioningManager {
* will result in a no-op. * will result in a no-op.
* @param callback The existing {@link RcsProvisioningCallback} to be * @param callback The existing {@link RcsProvisioningCallback} to be
* removed. * removed.
* @see #registerRcsProvisioningChangedCallback(RcsClientConfiguration, * @see #registerRcsProvisioningChangedCallback
* Executor, RcsProvisioningCallback) @throws IllegalArgumentException * @throws IllegalArgumentException if the subscription associated with this callback is
* if the subscription associated with this callback is invalid. * invalid.
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public void unregisterRcsProvisioningChangedCallback( public void unregisterRcsProvisioningChangedCallback(

View File

@@ -24,6 +24,7 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission; import android.annotation.RequiresPermission;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceSpecificException; import android.os.ServiceSpecificException;
import android.telephony.BinderCacheManager; import android.telephony.BinderCacheManager;
@@ -47,6 +48,9 @@ import java.util.concurrent.Executor;
* This allows multiple IMS applications to forward SIP messages to/from their application for the * This allows multiple IMS applications to forward SIP messages to/from their application for the
* purposes of providing a single IMS registration to the carrier's IMS network from potentially * purposes of providing a single IMS registration to the carrier's IMS network from potentially
* many IMS stacks implementing a subset of the supported MMTEL/RCS features. * many IMS stacks implementing a subset of the supported MMTEL/RCS features.
* <p>
* This API is only supported if the device supports the
* {@link PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION} feature.
* @hide * @hide
*/ */
@SystemApi @SystemApi
@@ -269,6 +273,7 @@ public class SipDelegateManager {
* {@link ImsException#getCode()} for more information. * {@link ImsException#getCode()} for more information.
* *
* @see CarrierConfigManager.Ims#KEY_IMS_SINGLE_REGISTRATION_REQUIRED_BOOL * @see CarrierConfigManager.Ims#KEY_IMS_SINGLE_REGISTRATION_REQUIRED_BOOL
* @see PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public boolean isSupported() throws ImsException { public boolean isSupported() throws ImsException {