diff options
17 files changed, 351 insertions, 54 deletions
diff --git a/api/current.txt b/api/current.txt index eb0ea0b69526..22f014e8d948 100644 --- a/api/current.txt +++ b/api/current.txt @@ -9873,6 +9873,7 @@ package android.content { field public static final String STORAGE_STATS_SERVICE = "storagestats"; field public static final String SYSTEM_HEALTH_SERVICE = "systemhealth"; field public static final String TELECOM_SERVICE = "telecom"; + field public static final String TELEPHONY_IMS_SERVICE = "telephony_ims"; field public static final String TELEPHONY_SERVICE = "phone"; field public static final String TELEPHONY_SUBSCRIPTION_SERVICE = "telephony_subscription_service"; field public static final String TEXT_CLASSIFICATION_SERVICE = "textclassification"; @@ -46390,13 +46391,20 @@ package android.telephony.ims { public final class ImsException extends java.lang.Exception { method public int getCode(); + field public static final int CODE_ERROR_INVALID_SUBSCRIPTION = 3; // 0x3 field public static final int CODE_ERROR_SERVICE_UNAVAILABLE = 1; // 0x1 field public static final int CODE_ERROR_UNSPECIFIED = 0; // 0x0 field public static final int CODE_ERROR_UNSUPPORTED_OPERATION = 2; // 0x2 } + public class ImsManager { + method @NonNull public android.telephony.ims.ImsMmTelManager getImsMmTelManager(int); + field public static final String ACTION_WFC_IMS_REGISTRATION_ERROR = "android.telephony.ims.action.WFC_IMS_REGISTRATION_ERROR"; + field public static final String EXTRA_WFC_REGISTRATION_FAILURE_MESSAGE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_MESSAGE"; + field public static final String EXTRA_WFC_REGISTRATION_FAILURE_TITLE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_TITLE"; + } + public class ImsMmTelManager implements android.telephony.ims.RegistrationManager { - method @NonNull @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public static android.telephony.ims.ImsMmTelManager createForSubscriptionId(int); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>); method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>); method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public int getVoWiFiModeSetting(); diff --git a/api/system-current.txt b/api/system-current.txt index 121f39ada70f..44a1c0d79c13 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -1590,7 +1590,6 @@ package android.content { field public static final String STATS_MANAGER = "stats"; field public static final String STATUS_BAR_SERVICE = "statusbar"; field public static final String SYSTEM_UPDATE_SERVICE = "system_update"; - field public static final String TELEPHONY_IMS_SERVICE = "telephony_ims"; field public static final String TELEPHONY_REGISTRY_SERVICE = "telephony_registry"; field public static final String TETHERING_SERVICE = "tethering"; field public static final String VR_SERVICE = "vrmanager"; @@ -7217,6 +7216,7 @@ package android.provider { field public static final String HPLMNS = "hplmns"; field public static final String ICC_ID = "icc_id"; field public static final String IMSI = "imsi"; + field public static final String IMS_RCS_UCE_ENABLED = "ims_rcs_uce_enabled"; field public static final String ISO_COUNTRY_CODE = "iso_country_code"; field public static final String IS_EMBEDDED = "is_embedded"; field public static final String IS_OPPORTUNISTIC = "is_opportunistic"; @@ -10161,15 +10161,12 @@ package android.telephony.ims { } public class ImsManager { - method @NonNull public android.telephony.ims.ImsMmTelManager getImsMmTelManager(int); method @NonNull public android.telephony.ims.ImsRcsManager getImsRcsManager(int); field public static final String ACTION_FORBIDDEN_NO_SERVICE_AUTHORIZATION = "com.android.internal.intent.action.ACTION_FORBIDDEN_NO_SERVICE_AUTHORIZATION"; - field public static final String ACTION_WFC_IMS_REGISTRATION_ERROR = "android.telephony.ims.action.WFC_IMS_REGISTRATION_ERROR"; - field public static final String EXTRA_WFC_REGISTRATION_FAILURE_MESSAGE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_MESSAGE"; - field public static final String EXTRA_WFC_REGISTRATION_FAILURE_TITLE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_TITLE"; } public class ImsMmTelManager implements android.telephony.ims.RegistrationManager { + method @Deprecated @NonNull @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public static android.telephony.ims.ImsMmTelManager createForSubscriptionId(int); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getFeatureState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws android.telephony.ims.ImsException; method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoWiFiRoamingModeSetting(); @@ -10537,8 +10534,8 @@ package android.telephony.ims { method public int describeContents(); method @NonNull public java.util.List<java.lang.String> getCapableExtensionTags(); method @NonNull public android.net.Uri getContactUri(); - method @Nullable public android.net.Uri getServiceUri(int); - method public boolean isCapable(int); + method @Nullable public android.net.Uri getServiceUri(long); + method public boolean isCapable(long); method public boolean isCapable(@NonNull String); method public void writeToParcel(@NonNull android.os.Parcel, int); field public static final int CAPABILITY_CALL_COMPOSER = 4194304; // 0x400000 @@ -10560,6 +10557,7 @@ package android.telephony.ims { field public static final int CAPABILITY_IMAGE_SHARE = 256; // 0x100 field public static final int CAPABILITY_IP_VIDEO_CALL = 16384; // 0x4000 field public static final int CAPABILITY_IP_VOICE_CALL = 8192; // 0x2000 + field public static final int CAPABILITY_MMTEL_CALL_COMPOSER = 1073741824; // 0x40000000 field public static final int CAPABILITY_PLUG_IN = 268435456; // 0x10000000 field public static final int CAPABILITY_POST_CALL = 8388608; // 0x800000 field public static final int CAPABILITY_RCS_VIDEO_CALL = 1048576; // 0x100000 @@ -10568,6 +10566,7 @@ package android.telephony.ims { field public static final int CAPABILITY_SHARED_MAP = 16777216; // 0x1000000 field public static final int CAPABILITY_SHARED_SKETCH = 33554432; // 0x2000000 field public static final int CAPABILITY_SOCIAL_PRESENCE = 2048; // 0x800 + field public static final int CAPABILITY_STANDALONE_CHAT_BOT = 536870912; // 0x20000000 field public static final int CAPABILITY_VIDEO_SHARE = 1024; // 0x400 field public static final int CAPABILITY_VIDEO_SHARE_DURING_CS_CALL = 512; // 0x200 field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.RcsContactUceCapability> CREATOR; @@ -10575,12 +10574,43 @@ package android.telephony.ims { public static class RcsContactUceCapability.Builder { ctor public RcsContactUceCapability.Builder(@NonNull android.net.Uri); - method @NonNull public android.telephony.ims.RcsContactUceCapability.Builder add(int, @NonNull android.net.Uri); - method @NonNull public android.telephony.ims.RcsContactUceCapability.Builder add(int); + method @NonNull public android.telephony.ims.RcsContactUceCapability.Builder add(long, @NonNull android.net.Uri); + method @NonNull public android.telephony.ims.RcsContactUceCapability.Builder add(long); method @NonNull public android.telephony.ims.RcsContactUceCapability.Builder add(@NonNull String); method @NonNull public android.telephony.ims.RcsContactUceCapability build(); } + public class RcsUceAdapter { + method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getUcePublishState() throws android.telephony.ims.ImsException; + method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isUceSettingEnabled() throws android.telephony.ims.ImsException; + method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void requestCapabilities(@NonNull java.util.concurrent.Executor, @NonNull java.util.List<android.net.Uri>, @NonNull android.telephony.ims.RcsUceAdapter.CapabilitiesCallback) throws android.telephony.ims.ImsException; + method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUceSettingEnabled(boolean) throws android.telephony.ims.ImsException; + field public static final int ERROR_ALREADY_IN_QUEUE = 13; // 0xd + field public static final int ERROR_FORBIDDEN = 6; // 0x6 + field public static final int ERROR_GENERIC_FAILURE = 1; // 0x1 + field public static final int ERROR_INSUFFICIENT_MEMORY = 11; // 0xb + field public static final int ERROR_LOST_NETWORK = 12; // 0xc + field public static final int ERROR_NOT_AUTHORIZED = 5; // 0x5 + field public static final int ERROR_NOT_AVAILABLE = 3; // 0x3 + field public static final int ERROR_NOT_ENABLED = 2; // 0x2 + field public static final int ERROR_NOT_FOUND = 7; // 0x7 + field public static final int ERROR_NOT_REGISTERED = 4; // 0x4 + field public static final int ERROR_REQUEST_TIMEOUT = 10; // 0xa + field public static final int ERROR_REQUEST_TOO_LARGE = 8; // 0x8 + field public static final int PUBLISH_STATE_200_OK = 1; // 0x1 + field public static final int PUBLISH_STATE_NOT_PUBLISHED = 2; // 0x2 + field public static final int PUBLISH_STATE_OTHER_ERROR = 6; // 0x6 + field public static final int PUBLISH_STATE_RCS_PROVISION_ERROR = 4; // 0x4 + field public static final int PUBLISH_STATE_REQUEST_TIMEOUT = 5; // 0x5 + field public static final int PUBLISH_STATE_VOLTE_PROVISION_ERROR = 3; // 0x3 + } + + public static class RcsUceAdapter.CapabilitiesCallback { + ctor public RcsUceAdapter.CapabilitiesCallback(); + method public void onCapabilitiesReceived(@NonNull java.util.List<android.telephony.ims.RcsContactUceCapability>); + method public void onError(int); + } + } package android.telephony.ims.feature { @@ -10670,6 +10700,8 @@ package android.telephony.ims.feature { public class RcsFeature extends android.telephony.ims.feature.ImsFeature { ctor public RcsFeature(); method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy); + method @NonNull public android.telephony.ims.stub.RcsSipOptionsImplBase getOptionsExchangeImpl(); + method @NonNull public android.telephony.ims.stub.RcsPresenceExchangeImplBase getPresenceExchangeImpl(); method public final void notifyCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.RcsFeature.RcsImsCapabilities); method public void onFeatureReady(); method public void onFeatureRemoved(); @@ -10862,6 +10894,71 @@ package android.telephony.ims.stub { field public static final int INVALID_RESULT = -1; // 0xffffffff } + public class RcsCapabilityExchange { + ctor public RcsCapabilityExchange(); + method public final void onCommandUpdate(int, int) throws android.telephony.ims.ImsException; + field public static final int COMMAND_CODE_FETCH_ERROR = 4; // 0x4 + field public static final int COMMAND_CODE_GENERIC_FAILURE = 2; // 0x2 + field public static final int COMMAND_CODE_INSUFFICIENT_MEMORY = 6; // 0x6 + field public static final int COMMAND_CODE_INVALID_PARAM = 3; // 0x3 + field public static final int COMMAND_CODE_LOST_NETWORK_CONNECTION = 7; // 0x7 + field public static final int COMMAND_CODE_NOT_FOUND = 9; // 0x9 + field public static final int COMMAND_CODE_NOT_SUPPORTED = 8; // 0x8 + field public static final int COMMAND_CODE_NO_CHANGE_IN_CAP = 11; // 0xb + field public static final int COMMAND_CODE_REQUEST_TIMEOUT = 5; // 0x5 + field public static final int COMMAND_CODE_SERVICE_UNAVAILABLE = 10; // 0xa + field public static final int COMMAND_CODE_SERVICE_UNKNOWN = 0; // 0x0 + field public static final int COMMAND_CODE_SUCCESS = 1; // 0x1 + } + + public class RcsPresenceExchangeImplBase extends android.telephony.ims.stub.RcsCapabilityExchange { + ctor public RcsPresenceExchangeImplBase(); + method public final void onCapabilityRequestResponse(@NonNull java.util.List<android.telephony.ims.RcsContactUceCapability>, int) throws android.telephony.ims.ImsException; + method public final void onNetworkResponse(int, @NonNull String, int) throws android.telephony.ims.ImsException; + method public final void onNotifyUpdateCapabilites(int) throws android.telephony.ims.ImsException; + method public final void onUnpublish() throws android.telephony.ims.ImsException; + method public void requestCapabilities(@NonNull java.util.List<android.net.Uri>, int); + method public void updateCapabilities(@NonNull android.telephony.ims.RcsContactUceCapability, int); + field public static final int CAPABILITY_UPDATE_TRIGGER_ETAG_EXPIRED = 0; // 0x0 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_2G = 6; // 0x6 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_3G = 5; // 0x5 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_EHRPD = 3; // 0x3 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_HSPAPLUS = 4; // 0x4 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_IWLAN = 8; // 0x8 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_LTE_VOPS_DISABLED = 1; // 0x1 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_LTE_VOPS_ENABLED = 2; // 0x2 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_NR5G_VOPS_DISABLED = 10; // 0xa + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_NR5G_VOPS_ENABLED = 11; // 0xb + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_WLAN = 7; // 0x7 + field public static final int CAPABILITY_UPDATE_TRIGGER_UNKNOWN = 9; // 0x9 + field public static final int RESPONSE_FORBIDDEN = 3; // 0x3 + field public static final int RESPONSE_NOT_AUTHORIZED_FOR_PRESENCE = 2; // 0x2 + field public static final int RESPONSE_NOT_FOUND = 4; // 0x4 + field public static final int RESPONSE_NOT_REGISTERED = 1; // 0x1 + field public static final int RESPONSE_SIP_INTERVAL_TOO_SHORT = 7; // 0x7 + field public static final int RESPONSE_SIP_REQUEST_TIMEOUT = 5; // 0x5 + field public static final int RESPONSE_SIP_SERVICE_UNAVAILABLE = 8; // 0x8 + field public static final int RESPONSE_SUBSCRIBE_GENERIC_FAILURE = -1; // 0xffffffff + field public static final int RESPONSE_SUBSCRIBE_TOO_LARGE = 6; // 0x6 + field public static final int RESPONSE_SUCCESS = 0; // 0x0 + } + + public class RcsSipOptionsImplBase extends android.telephony.ims.stub.RcsCapabilityExchange { + ctor public RcsSipOptionsImplBase(); + method public final void onCapabilityRequestResponse(int, @NonNull String, @Nullable android.telephony.ims.RcsContactUceCapability, int) throws android.telephony.ims.ImsException; + method public final void onRemoteCapabilityRequest(@NonNull android.net.Uri, @NonNull android.telephony.ims.RcsContactUceCapability, int) throws android.telephony.ims.ImsException; + method public void respondToCapabilityRequest(@NonNull String, @NonNull android.telephony.ims.RcsContactUceCapability, int); + method public void respondToCapabilityRequestWithError(@NonNull android.net.Uri, int, @NonNull String, int); + method public void sendCapabilityRequest(@NonNull android.net.Uri, @NonNull android.telephony.ims.RcsContactUceCapability, int); + field public static final int RESPONSE_BAD_REQUEST = 5; // 0x5 + field public static final int RESPONSE_DOES_NOT_EXIST_ANYWHERE = 4; // 0x4 + field public static final int RESPONSE_GENERIC_FAILURE = -1; // 0xffffffff + field public static final int RESPONSE_NOT_FOUND = 3; // 0x3 + field public static final int RESPONSE_REQUEST_TIMEOUT = 2; // 0x2 + field public static final int RESPONSE_SUCCESS = 0; // 0x0 + field public static final int RESPONSE_TEMPORARILY_UNAVAILABLE = 1; // 0x1 + } + } package android.telephony.mbms { diff --git a/api/test-current.txt b/api/test-current.txt index fcf68dcd220b..827ec3486122 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -657,7 +657,6 @@ package android.content { field public static final String PERMISSION_SERVICE = "permission"; field public static final String ROLLBACK_SERVICE = "rollback"; field public static final String STATUS_BAR_SERVICE = "statusbar"; - field public static final String TELEPHONY_IMS_SERVICE = "telephony_ims"; field public static final String TEST_NETWORK_SERVICE = "test_network"; } @@ -3400,15 +3399,12 @@ package android.telephony.ims { } public class ImsManager { - method @NonNull public android.telephony.ims.ImsMmTelManager getImsMmTelManager(int); method @NonNull public android.telephony.ims.ImsRcsManager getImsRcsManager(int); field public static final String ACTION_FORBIDDEN_NO_SERVICE_AUTHORIZATION = "com.android.internal.intent.action.ACTION_FORBIDDEN_NO_SERVICE_AUTHORIZATION"; - field public static final String ACTION_WFC_IMS_REGISTRATION_ERROR = "android.telephony.ims.action.WFC_IMS_REGISTRATION_ERROR"; - field public static final String EXTRA_WFC_REGISTRATION_FAILURE_MESSAGE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_MESSAGE"; - field public static final String EXTRA_WFC_REGISTRATION_FAILURE_TITLE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_TITLE"; } public class ImsMmTelManager implements android.telephony.ims.RegistrationManager { + method @Deprecated @NonNull @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public static android.telephony.ims.ImsMmTelManager createForSubscriptionId(int); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getFeatureState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws android.telephony.ims.ImsException; method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getVoWiFiRoamingModeSetting(); @@ -3768,6 +3764,87 @@ package android.telephony.ims { method public void onProvisioningStringChanged(int, @NonNull String); } + public final class RcsContactUceCapability implements android.os.Parcelable { + method public int describeContents(); + method @NonNull public java.util.List<java.lang.String> getCapableExtensionTags(); + method @NonNull public android.net.Uri getContactUri(); + method @Nullable public android.net.Uri getServiceUri(long); + method public boolean isCapable(long); + method public boolean isCapable(@NonNull String); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field public static final int CAPABILITY_CALL_COMPOSER = 4194304; // 0x400000 + field public static final int CAPABILITY_CHAT_BOT = 67108864; // 0x4000000 + field public static final int CAPABILITY_CHAT_BOT_ROLE = 134217728; // 0x8000000 + field public static final int CAPABILITY_CHAT_SESSION = 2; // 0x2 + field public static final int CAPABILITY_CHAT_SESSION_STORE_FORWARD = 4; // 0x4 + field public static final int CAPABILITY_CHAT_STANDALONE = 1; // 0x1 + field public static final int CAPABILITY_DISCOVERY_VIA_PRESENCE = 4096; // 0x1000 + field public static final int CAPABILITY_FILE_TRANSFER = 8; // 0x8 + field public static final int CAPABILITY_FILE_TRANSFER_HTTP = 64; // 0x40 + field public static final int CAPABILITY_FILE_TRANSFER_SMS = 128; // 0x80 + field public static final int CAPABILITY_FILE_TRANSFER_STORE_FORWARD = 32; // 0x20 + field public static final int CAPABILITY_FILE_TRANSFER_THUMBNAIL = 16; // 0x10 + field public static final int CAPABILITY_GEOLOCATION_PULL = 131072; // 0x20000 + field public static final int CAPABILITY_GEOLOCATION_PULL_FILE_TRANSFER = 262144; // 0x40000 + field public static final int CAPABILITY_GEOLOCATION_PUSH = 32768; // 0x8000 + field public static final int CAPABILITY_GEOLOCATION_PUSH_SMS = 65536; // 0x10000 + field public static final int CAPABILITY_IMAGE_SHARE = 256; // 0x100 + field public static final int CAPABILITY_IP_VIDEO_CALL = 16384; // 0x4000 + field public static final int CAPABILITY_IP_VOICE_CALL = 8192; // 0x2000 + field public static final int CAPABILITY_MMTEL_CALL_COMPOSER = 1073741824; // 0x40000000 + field public static final int CAPABILITY_PLUG_IN = 268435456; // 0x10000000 + field public static final int CAPABILITY_POST_CALL = 8388608; // 0x800000 + field public static final int CAPABILITY_RCS_VIDEO_CALL = 1048576; // 0x100000 + field public static final int CAPABILITY_RCS_VIDEO_ONLY_CALL = 2097152; // 0x200000 + field public static final int CAPABILITY_RCS_VOICE_CALL = 524288; // 0x80000 + field public static final int CAPABILITY_SHARED_MAP = 16777216; // 0x1000000 + field public static final int CAPABILITY_SHARED_SKETCH = 33554432; // 0x2000000 + field public static final int CAPABILITY_SOCIAL_PRESENCE = 2048; // 0x800 + field public static final int CAPABILITY_STANDALONE_CHAT_BOT = 536870912; // 0x20000000 + field public static final int CAPABILITY_VIDEO_SHARE = 1024; // 0x400 + field public static final int CAPABILITY_VIDEO_SHARE_DURING_CS_CALL = 512; // 0x200 + field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.RcsContactUceCapability> CREATOR; + } + + public static class RcsContactUceCapability.Builder { + ctor public RcsContactUceCapability.Builder(@NonNull android.net.Uri); + method @NonNull public android.telephony.ims.RcsContactUceCapability.Builder add(long, @NonNull android.net.Uri); + method @NonNull public android.telephony.ims.RcsContactUceCapability.Builder add(long); + method @NonNull public android.telephony.ims.RcsContactUceCapability.Builder add(@NonNull String); + method @NonNull public android.telephony.ims.RcsContactUceCapability build(); + } + + public class RcsUceAdapter { + method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getUcePublishState() throws android.telephony.ims.ImsException; + method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isUceSettingEnabled() throws android.telephony.ims.ImsException; + method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void requestCapabilities(@NonNull java.util.concurrent.Executor, @NonNull java.util.List<android.net.Uri>, @NonNull android.telephony.ims.RcsUceAdapter.CapabilitiesCallback) throws android.telephony.ims.ImsException; + method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUceSettingEnabled(boolean) throws android.telephony.ims.ImsException; + field public static final int ERROR_ALREADY_IN_QUEUE = 13; // 0xd + field public static final int ERROR_FORBIDDEN = 6; // 0x6 + field public static final int ERROR_GENERIC_FAILURE = 1; // 0x1 + field public static final int ERROR_INSUFFICIENT_MEMORY = 11; // 0xb + field public static final int ERROR_LOST_NETWORK = 12; // 0xc + field public static final int ERROR_NOT_AUTHORIZED = 5; // 0x5 + field public static final int ERROR_NOT_AVAILABLE = 3; // 0x3 + field public static final int ERROR_NOT_ENABLED = 2; // 0x2 + field public static final int ERROR_NOT_FOUND = 7; // 0x7 + field public static final int ERROR_NOT_REGISTERED = 4; // 0x4 + field public static final int ERROR_REQUEST_TIMEOUT = 10; // 0xa + field public static final int ERROR_REQUEST_TOO_LARGE = 8; // 0x8 + field public static final int PUBLISH_STATE_200_OK = 1; // 0x1 + field public static final int PUBLISH_STATE_NOT_PUBLISHED = 2; // 0x2 + field public static final int PUBLISH_STATE_OTHER_ERROR = 6; // 0x6 + field public static final int PUBLISH_STATE_RCS_PROVISION_ERROR = 4; // 0x4 + field public static final int PUBLISH_STATE_REQUEST_TIMEOUT = 5; // 0x5 + field public static final int PUBLISH_STATE_VOLTE_PROVISION_ERROR = 3; // 0x3 + } + + public static class RcsUceAdapter.CapabilitiesCallback { + ctor public RcsUceAdapter.CapabilitiesCallback(); + method public void onCapabilitiesReceived(@NonNull java.util.List<android.telephony.ims.RcsContactUceCapability>); + method public void onError(int); + } + } package android.telephony.ims.feature { @@ -3857,6 +3934,8 @@ package android.telephony.ims.feature { public class RcsFeature extends android.telephony.ims.feature.ImsFeature { ctor public RcsFeature(); method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy); + method @NonNull public android.telephony.ims.stub.RcsSipOptionsImplBase getOptionsExchangeImpl(); + method @NonNull public android.telephony.ims.stub.RcsPresenceExchangeImplBase getPresenceExchangeImpl(); method public final void notifyCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.RcsFeature.RcsImsCapabilities); method public void onFeatureReady(); method public void onFeatureRemoved(); @@ -4049,6 +4128,71 @@ package android.telephony.ims.stub { field public static final int INVALID_RESULT = -1; // 0xffffffff } + public class RcsCapabilityExchange { + ctor public RcsCapabilityExchange(); + method public final void onCommandUpdate(int, int) throws android.telephony.ims.ImsException; + field public static final int COMMAND_CODE_FETCH_ERROR = 4; // 0x4 + field public static final int COMMAND_CODE_GENERIC_FAILURE = 2; // 0x2 + field public static final int COMMAND_CODE_INSUFFICIENT_MEMORY = 6; // 0x6 + field public static final int COMMAND_CODE_INVALID_PARAM = 3; // 0x3 + field public static final int COMMAND_CODE_LOST_NETWORK_CONNECTION = 7; // 0x7 + field public static final int COMMAND_CODE_NOT_FOUND = 9; // 0x9 + field public static final int COMMAND_CODE_NOT_SUPPORTED = 8; // 0x8 + field public static final int COMMAND_CODE_NO_CHANGE_IN_CAP = 11; // 0xb + field public static final int COMMAND_CODE_REQUEST_TIMEOUT = 5; // 0x5 + field public static final int COMMAND_CODE_SERVICE_UNAVAILABLE = 10; // 0xa + field public static final int COMMAND_CODE_SERVICE_UNKNOWN = 0; // 0x0 + field public static final int COMMAND_CODE_SUCCESS = 1; // 0x1 + } + + public class RcsPresenceExchangeImplBase extends android.telephony.ims.stub.RcsCapabilityExchange { + ctor public RcsPresenceExchangeImplBase(); + method public final void onCapabilityRequestResponse(@NonNull java.util.List<android.telephony.ims.RcsContactUceCapability>, int) throws android.telephony.ims.ImsException; + method public final void onNetworkResponse(int, @NonNull String, int) throws android.telephony.ims.ImsException; + method public final void onNotifyUpdateCapabilites(int) throws android.telephony.ims.ImsException; + method public final void onUnpublish() throws android.telephony.ims.ImsException; + method public void requestCapabilities(@NonNull java.util.List<android.net.Uri>, int); + method public void updateCapabilities(@NonNull android.telephony.ims.RcsContactUceCapability, int); + field public static final int CAPABILITY_UPDATE_TRIGGER_ETAG_EXPIRED = 0; // 0x0 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_2G = 6; // 0x6 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_3G = 5; // 0x5 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_EHRPD = 3; // 0x3 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_HSPAPLUS = 4; // 0x4 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_IWLAN = 8; // 0x8 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_LTE_VOPS_DISABLED = 1; // 0x1 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_LTE_VOPS_ENABLED = 2; // 0x2 + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_NR5G_VOPS_DISABLED = 10; // 0xa + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_NR5G_VOPS_ENABLED = 11; // 0xb + field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_WLAN = 7; // 0x7 + field public static final int CAPABILITY_UPDATE_TRIGGER_UNKNOWN = 9; // 0x9 + field public static final int RESPONSE_FORBIDDEN = 3; // 0x3 + field public static final int RESPONSE_NOT_AUTHORIZED_FOR_PRESENCE = 2; // 0x2 + field public static final int RESPONSE_NOT_FOUND = 4; // 0x4 + field public static final int RESPONSE_NOT_REGISTERED = 1; // 0x1 + field public static final int RESPONSE_SIP_INTERVAL_TOO_SHORT = 7; // 0x7 + field public static final int RESPONSE_SIP_REQUEST_TIMEOUT = 5; // 0x5 + field public static final int RESPONSE_SIP_SERVICE_UNAVAILABLE = 8; // 0x8 + field public static final int RESPONSE_SUBSCRIBE_GENERIC_FAILURE = -1; // 0xffffffff + field public static final int RESPONSE_SUBSCRIBE_TOO_LARGE = 6; // 0x6 + field public static final int RESPONSE_SUCCESS = 0; // 0x0 + } + + public class RcsSipOptionsImplBase extends android.telephony.ims.stub.RcsCapabilityExchange { + ctor public RcsSipOptionsImplBase(); + method public final void onCapabilityRequestResponse(int, @NonNull String, @Nullable android.telephony.ims.RcsContactUceCapability, int) throws android.telephony.ims.ImsException; + method public final void onRemoteCapabilityRequest(@NonNull android.net.Uri, @NonNull android.telephony.ims.RcsContactUceCapability, int) throws android.telephony.ims.ImsException; + method public void respondToCapabilityRequest(@NonNull String, @NonNull android.telephony.ims.RcsContactUceCapability, int); + method public void respondToCapabilityRequestWithError(@NonNull android.net.Uri, int, @NonNull String, int); + method public void sendCapabilityRequest(@NonNull android.net.Uri, @NonNull android.telephony.ims.RcsContactUceCapability, int); + field public static final int RESPONSE_BAD_REQUEST = 5; // 0x5 + field public static final int RESPONSE_DOES_NOT_EXIST_ANYWHERE = 4; // 0x4 + field public static final int RESPONSE_GENERIC_FAILURE = -1; // 0xffffffff + field public static final int RESPONSE_NOT_FOUND = 3; // 0x3 + field public static final int RESPONSE_REQUEST_TIMEOUT = 2; // 0x2 + field public static final int RESPONSE_SUCCESS = 0; // 0x0 + field public static final int RESPONSE_TEMPORARILY_UNAVAILABLE = 1; // 0x1 + } + } package android.telephony.mbms { diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 472d9567e2ad..8fa00abb3bcf 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -4854,10 +4854,7 @@ public abstract class Context { /** * Use with {@link #getSystemService(String)} to retrieve an * {@link android.telephony.ims.ImsManager}. - * @hide */ - @SystemApi - @TestApi public static final String TELEPHONY_IMS_SERVICE = "telephony_ims"; /** diff --git a/core/java/android/provider/Telephony.java b/core/java/android/provider/Telephony.java index ca07c8916ace..1611d28b1be2 100644 --- a/core/java/android/provider/Telephony.java +++ b/core/java/android/provider/Telephony.java @@ -5252,6 +5252,12 @@ public final class Telephony { public static final String WFC_IMS_ROAMING_ENABLED = "wfc_ims_roaming_enabled"; /** + * Determines if the user has enabled IMS RCS User Capability Exchange (UCE) for this + * subscription. + */ + public static final String IMS_RCS_UCE_ENABLED = "ims_rcs_uce_enabled"; + + /** * TelephonyProvider column name for whether a subscription is opportunistic, that is, * whether the network it connects to is limited in functionality or coverage. * For example, CBRS. diff --git a/telephony/java/android/telephony/ImsManager.java b/telephony/java/android/telephony/ImsManager.java index 9b4292f42172..704e5aa78188 100644 --- a/telephony/java/android/telephony/ImsManager.java +++ b/telephony/java/android/telephony/ImsManager.java @@ -27,11 +27,7 @@ import android.telephony.SubscriptionManager; /** * Provides access to information about Telephony IMS services on the device. - * - * @hide */ -@SystemApi -@TestApi @SystemService(Context.TELEPHONY_IMS_SERVICE) public class ImsManager { @@ -45,7 +41,10 @@ public class ImsManager { * <p class="note"> * Carrier applications may listen to this broadcast to be notified of possible IMS provisioning * issues. + * @hide */ + @SystemApi + @TestApi // Moved from TelephonyIntents, need to keep backwards compatibility with OEM apps that have // this value hard-coded in BroadcastReceiver. @SuppressLint("ActionValue") @@ -104,7 +103,10 @@ public class ImsManager { * @param subscriptionId The ID of the subscription that this ImsRcsManager will use. * @throws IllegalArgumentException if the subscription is invalid. * @return a ImsRcsManager instance with the specific subscription ID. + * @hide */ + @SystemApi + @TestApi @NonNull public ImsRcsManager getImsRcsManager(int subscriptionId) { if (!SubscriptionManager.isValidSubscriptionId(subscriptionId)) { diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 8adf947ec74b..ea95aacc3184 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -677,6 +677,13 @@ public class SubscriptionManager { public static final String WFC_IMS_ROAMING_ENABLED = SimInfo.WFC_IMS_ROAMING_ENABLED; /** + * Determines if the user has enabled IMS RCS User Capability Exchange (UCE) for this + * subscription. + * @hide + */ + public static final String IMS_RCS_UCE_ENABLED = SimInfo.IMS_RCS_UCE_ENABLED; + + /** * TelephonyProvider column name for whether a subscription is opportunistic, that is, * whether the network it connects to is limited in functionality or coverage. * For example, CBRS. diff --git a/telephony/java/android/telephony/ims/ImsException.java b/telephony/java/android/telephony/ims/ImsException.java index cb3f0f92625e..643f452d2e75 100644 --- a/telephony/java/android/telephony/ims/ImsException.java +++ b/telephony/java/android/telephony/ims/ImsException.java @@ -61,7 +61,6 @@ public final class ImsException extends Exception { * This is a configuration error and there should be no retry. The subscription used for this * operation is either invalid or has become inactive. The active subscriptions can be queried * with {@link SubscriptionManager#getActiveSubscriptionInfoList()}. - * @hide */ public static final int CODE_ERROR_INVALID_SUBSCRIPTION = 3; diff --git a/telephony/java/android/telephony/ims/ImsMmTelManager.java b/telephony/java/android/telephony/ims/ImsMmTelManager.java index c66672f13129..ba8e90ff539b 100644 --- a/telephony/java/android/telephony/ims/ImsMmTelManager.java +++ b/telephony/java/android/telephony/ims/ImsMmTelManager.java @@ -57,7 +57,8 @@ import java.util.function.Consumer; * registration and MmTel capability status callbacks, as well as query/modify user settings for the * associated subscription. * - * @see #createForSubscriptionId(int) + * Use {@link android.telephony.ims.ImsManager#getImsMmTelManager(int)} to get an instance of this + * manager. */ public class ImsMmTelManager implements RegistrationManager { @@ -225,8 +226,13 @@ public class ImsMmTelManager implements RegistrationManager { * (see {@link android.telephony.TelephonyManager#hasCarrierPrivileges}). * * @throws IllegalArgumentException if the subscription is invalid. - * + * @deprecated Use {@link android.telephony.ims.ImsManager#getImsMmTelManager(int)} to get an + * instance of this class. + * @hide */ + @SystemApi + @TestApi + @Deprecated @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236). @RequiresPermission(anyOf = { android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, @@ -242,7 +248,7 @@ public class ImsMmTelManager implements RegistrationManager { } /** - * Only visible for testing, use {@link #createForSubscriptionId(int)} instead. + * Only visible for testing, use {@link ImsManager#getImsMmTelManager(int)} instead. * @hide */ @VisibleForTesting @@ -252,7 +258,7 @@ public class ImsMmTelManager implements RegistrationManager { /** * Registers a {@link RegistrationCallback} with the system, which will provide registration - * updates for the subscription specified in {@link #createForSubscriptionId(int)}. Use + * updates for the subscription specified in {@link ImsManager#getImsMmTelManager(int)}. Use * {@link SubscriptionManager.OnSubscriptionsChangedListener} to listen to Subscription changed * events and call {@link #unregisterImsRegistrationCallback(RegistrationCallback)} to clean up. * @@ -450,7 +456,7 @@ public class ImsMmTelManager implements RegistrationManager { /** * Registers a {@link CapabilityCallback} with the system, which will provide MmTel service * availability updates for the subscription specified in - * {@link #createForSubscriptionId(int)}. The method {@see #isAvailable(int, int)} + * {@link ImsManager#getImsMmTelManager(int)}. The method {@see #isAvailable(int, int)} * can also be used to query this information at any time. * * Use {@link SubscriptionManager.OnSubscriptionsChangedListener} to listen to diff --git a/telephony/java/android/telephony/ims/ImsService.java b/telephony/java/android/telephony/ims/ImsService.java index 62bc2ae44573..2b3072eefe2e 100644 --- a/telephony/java/android/telephony/ims/ImsService.java +++ b/telephony/java/android/telephony/ims/ImsService.java @@ -60,9 +60,10 @@ import com.android.internal.annotations.VisibleForTesting; * The telephony framework will then bind to the ImsService you have defined in your manifest * if you are either: * 1) Defined as the default ImsService for the device in the device overlay using - * "config_ims_package". + * "config_ims_mmtel_package" or "config_ims_rcs_package". * 2) Defined as a Carrier Provided ImsService in the Carrier Configuration using - * {@link CarrierConfigManager#KEY_CONFIG_IMS_PACKAGE_OVERRIDE_STRING}. + * {@link CarrierConfigManager#KEY_CONFIG_IMS_MMTEL_PACKAGE_OVERRIDE_STRING} or + * {@link CarrierConfigManager#KEY_CONFIG_IMS_RCS_PACKAGE_OVERRIDE_STRING}. * * There are two ways to define to the platform which {@link ImsFeature}s this {@link ImsService} * supports, dynamic or static definitions. diff --git a/telephony/java/android/telephony/ims/RcsContactUceCapability.java b/telephony/java/android/telephony/ims/RcsContactUceCapability.java index 3e2903fa6f47..57b9b7a30f8c 100644 --- a/telephony/java/android/telephony/ims/RcsContactUceCapability.java +++ b/telephony/java/android/telephony/ims/RcsContactUceCapability.java @@ -16,10 +16,11 @@ package android.telephony.ims; -import android.annotation.IntDef; +import android.annotation.LongDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; @@ -37,6 +38,7 @@ import java.util.Map; * @hide */ @SystemApi +@TestApi public final class RcsContactUceCapability implements Parcelable { /** Supports 1-to-1 chat */ @@ -99,11 +101,16 @@ public final class RcsContactUceCapability implements Parcelable { public static final int CAPABILITY_CHAT_BOT_ROLE = (1 << 27); /** Supports the unidirectional plug-ins framework. */ public static final int CAPABILITY_PLUG_IN = (1 << 28); + /** Supports standalone Chatbot communication. */ + public static final int CAPABILITY_STANDALONE_CHAT_BOT = (1 << 29); + /** Supports MMTEL based call composer. */ + public static final int CAPABILITY_MMTEL_CALL_COMPOSER = (1 << 30); + /** @hide*/ @Retention(RetentionPolicy.SOURCE) - @IntDef(prefix = "CAPABILITY_", flag = true, value = { + @LongDef(prefix = "CAPABILITY_", flag = true, value = { CAPABILITY_CHAT_STANDALONE, CAPABILITY_CHAT_SESSION, CAPABILITY_CHAT_SESSION_STORE_FORWARD, @@ -132,7 +139,9 @@ public final class RcsContactUceCapability implements Parcelable { CAPABILITY_SHARED_SKETCH, CAPABILITY_CHAT_BOT, CAPABILITY_CHAT_BOT_ROLE, - CAPABILITY_PLUG_IN + CAPABILITY_PLUG_IN, + CAPABILITY_STANDALONE_CHAT_BOT, + CAPABILITY_MMTEL_CALL_COMPOSER }) public @interface CapabilityFlag {} @@ -159,11 +168,11 @@ public final class RcsContactUceCapability implements Parcelable { * @param type The capability to map to a service URI that is different from the contact's * URI. */ - public @NonNull Builder add(@CapabilityFlag int type, @NonNull Uri serviceUri) { + public @NonNull Builder add(@CapabilityFlag long type, @NonNull Uri serviceUri) { mCapabilities.mCapabilities |= type; // Put each of these capabilities into the map separately. - for (int shift = 0; shift < Integer.SIZE; shift++) { - int cap = type & (1 << shift); + for (long shift = 0; shift < Integer.SIZE; shift++) { + long cap = type & (1 << shift); if (cap != 0) { mCapabilities.mServiceMap.put(cap, serviceUri); // remove that capability from the field. @@ -181,7 +190,7 @@ public final class RcsContactUceCapability implements Parcelable { * Add a UCE capability flag that this contact supports. * @param type the capability that the contact supports. */ - public @NonNull Builder add(@CapabilityFlag int type) { + public @NonNull Builder add(@CapabilityFlag long type) { mCapabilities.mCapabilities |= type; return this; } @@ -207,7 +216,7 @@ public final class RcsContactUceCapability implements Parcelable { private final Uri mContactUri; private long mCapabilities; private List<String> mExtensionTags = new ArrayList<>(); - private Map<Integer, Uri> mServiceMap = new HashMap<>(); + private Map<Long, Uri> mServiceMap = new HashMap<>(); /** * Use {@link Builder} to build an instance of this interface. @@ -225,7 +234,7 @@ public final class RcsContactUceCapability implements Parcelable { // read mServiceMap as key,value pair int mapSize = in.readInt(); for (int i = 0; i < mapSize; i++) { - mServiceMap.put(in.readInt(), in.readParcelable(Uri.class.getClassLoader())); + mServiceMap.put(in.readLong(), in.readParcelable(Uri.class.getClassLoader())); } } @@ -250,8 +259,8 @@ public final class RcsContactUceCapability implements Parcelable { // write mServiceMap as key,value pairs int mapSize = mServiceMap.keySet().size(); out.writeInt(mapSize); - for (int key : mServiceMap.keySet()) { - out.writeInt(key); + for (long key : mServiceMap.keySet()) { + out.writeLong(key); out.writeParcelable(mServiceMap.get(key), 0); } } @@ -266,7 +275,7 @@ public final class RcsContactUceCapability implements Parcelable { * @param type The capability flag to query. * @return true if the capability flag specified is set, false otherwise. */ - public boolean isCapable(@CapabilityFlag int type) { + public boolean isCapable(@CapabilityFlag long type) { return (mCapabilities & type) > 0; } @@ -290,13 +299,13 @@ public final class RcsContactUceCapability implements Parcelable { * <p> * This will typically be the contact {@link Uri} available via {@link #getContactUri()} unless * a different service {@link Uri} was associated with this capability using - * {@link Builder#add(int, Uri)}. + * {@link Builder#add(long, Uri)}. * * @return a String containing the {@link Uri} associated with the service tag or * {@code null} if this capability is not set as capable. - * @see #isCapable(int) + * @see #isCapable(long) */ - public @Nullable Uri getServiceUri(@CapabilityFlag int type) { + public @Nullable Uri getServiceUri(@CapabilityFlag long type) { Uri result = mServiceMap.getOrDefault(type, null); // If the capability is capable, but does not have a service URI associated, use the default // contact URI. diff --git a/telephony/java/android/telephony/ims/RcsUceAdapter.java b/telephony/java/android/telephony/ims/RcsUceAdapter.java index b47bcb9b119b..d3f393ae11a2 100644 --- a/telephony/java/android/telephony/ims/RcsUceAdapter.java +++ b/telephony/java/android/telephony/ims/RcsUceAdapter.java @@ -21,6 +21,8 @@ import android.annotation.CallbackExecutor; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.RequiresPermission; +import android.annotation.SystemApi; +import android.annotation.TestApi; import android.content.Context; import android.net.Uri; import android.os.Binder; @@ -29,6 +31,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.telephony.ims.aidl.IImsRcsController; import android.telephony.ims.aidl.IRcsUceControllerCallback; +import android.telephony.ims.feature.RcsFeature; import android.util.Log; import java.lang.annotation.Retention; @@ -42,6 +45,8 @@ import java.util.concurrent.Executor; * @see ImsRcsManager#getUceAdapter() for information on creating an instance of this class. * @hide */ +@SystemApi +@TestApi public class RcsUceAdapter { private static final String TAG = "RcsUceAdapter"; @@ -197,6 +202,7 @@ public class RcsUceAdapter { /** * Not to be instantiated directly, use * {@link ImsRcsManager#getUceAdapter()} to instantiate this manager class. + * @hide */ RcsUceAdapter(int subId) { mSubId = subId; @@ -222,7 +228,7 @@ public class RcsUceAdapter { * becomes inactive. See {@link ImsException#getCode()} for more information on the error codes. */ @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) - public void requestCapabilities(@CallbackExecutor Executor executor, + public void requestCapabilities(@NonNull @CallbackExecutor Executor executor, @NonNull List<Uri> contactNumbers, @NonNull CapabilitiesCallback c) throws ImsException { if (c == null) { @@ -299,7 +305,7 @@ public class RcsUceAdapter { * for the associated subscription. * * @return true if the user’s setting for UCE is enabled, false otherwise. If false, - * {@link ImsRcsManager#isCapable(int)} will return false for + * {@link ImsRcsManager#isCapable(int, int)} will return false for * {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_OPTIONS_UCE} and * {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_PRESENCE_UCE} * @see #setUceSettingEnabled(boolean) diff --git a/telephony/java/android/telephony/ims/feature/MmTelFeature.java b/telephony/java/android/telephony/ims/feature/MmTelFeature.java index f3aea4978971..a3ce1b585f76 100644 --- a/telephony/java/android/telephony/ims/feature/MmTelFeature.java +++ b/telephony/java/android/telephony/ims/feature/MmTelFeature.java @@ -513,7 +513,7 @@ public class MmTelFeature extends ImsFeature { * @param callProfile The {@link ImsCallProfile} IMS call profile with details. * This can be null if no call information is available for the rejected call. * @param reason The {@link ImsReasonInfo} call rejection reason. - * * @hide + * @hide */ @SystemApi @TestApi public final void notifyRejectedCall(@NonNull ImsCallProfile callProfile, diff --git a/telephony/java/android/telephony/ims/feature/RcsFeature.java b/telephony/java/android/telephony/ims/feature/RcsFeature.java index 501e0e8fa22c..e4efc20437bb 100644 --- a/telephony/java/android/telephony/ims/feature/RcsFeature.java +++ b/telephony/java/android/telephony/ims/feature/RcsFeature.java @@ -349,9 +349,8 @@ public class RcsFeature extends ImsFeature { * * @return An instance of {@link RcsSipOptionsImplBase} that implements SIP options exchange if * it is supported by the device. - * @hide */ - public RcsSipOptionsImplBase getOptionsExchangeImpl() { + public @NonNull RcsSipOptionsImplBase getOptionsExchangeImpl() { // Base Implementation, override to implement functionality return new RcsSipOptionsImplBase(); } @@ -365,9 +364,8 @@ public class RcsFeature extends ImsFeature { * * @return An instance of {@link RcsPresenceExchangeImplBase} that implements presence * exchange if it is supported by the device. - * @hide */ - public RcsPresenceExchangeImplBase getPresenceExchangeImpl() { + public @NonNull RcsPresenceExchangeImplBase getPresenceExchangeImpl() { // Base Implementation, override to implement functionality. return new RcsPresenceExchangeImplBase(); } diff --git a/telephony/java/android/telephony/ims/stub/RcsCapabilityExchange.java b/telephony/java/android/telephony/ims/stub/RcsCapabilityExchange.java index fda295a27111..a24af2f74e27 100644 --- a/telephony/java/android/telephony/ims/stub/RcsCapabilityExchange.java +++ b/telephony/java/android/telephony/ims/stub/RcsCapabilityExchange.java @@ -17,6 +17,8 @@ package android.telephony.ims.stub; import android.annotation.IntDef; +import android.annotation.SystemApi; +import android.annotation.TestApi; import android.os.RemoteException; import android.telephony.ims.ImsException; import android.telephony.ims.aidl.IRcsFeatureListener; @@ -32,6 +34,8 @@ import java.lang.annotation.RetentionPolicy; * * @hide */ +@SystemApi +@TestApi public class RcsCapabilityExchange { /** Service is unknown. */ diff --git a/telephony/java/android/telephony/ims/stub/RcsPresenceExchangeImplBase.java b/telephony/java/android/telephony/ims/stub/RcsPresenceExchangeImplBase.java index bb034489a296..f200ea2af2bc 100644 --- a/telephony/java/android/telephony/ims/stub/RcsPresenceExchangeImplBase.java +++ b/telephony/java/android/telephony/ims/stub/RcsPresenceExchangeImplBase.java @@ -18,6 +18,8 @@ package android.telephony.ims.stub; import android.annotation.IntDef; import android.annotation.NonNull; +import android.annotation.SystemApi; +import android.annotation.TestApi; import android.net.Uri; import android.os.RemoteException; import android.telephony.ims.ImsException; @@ -37,6 +39,8 @@ import java.util.List; * * @hide */ +@SystemApi +@TestApi public class RcsPresenceExchangeImplBase extends RcsCapabilityExchange { private static final String LOG_TAG = "RcsPresenceExchangeIB"; diff --git a/telephony/java/android/telephony/ims/stub/RcsSipOptionsImplBase.java b/telephony/java/android/telephony/ims/stub/RcsSipOptionsImplBase.java index 1c68fc08529e..355c4dde75d8 100644 --- a/telephony/java/android/telephony/ims/stub/RcsSipOptionsImplBase.java +++ b/telephony/java/android/telephony/ims/stub/RcsSipOptionsImplBase.java @@ -19,6 +19,8 @@ package android.telephony.ims.stub; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SystemApi; +import android.annotation.TestApi; import android.net.Uri; import android.os.RemoteException; import android.telephony.ims.ImsException; @@ -35,6 +37,8 @@ import java.lang.annotation.RetentionPolicy; * * @hide */ +@SystemApi +@TestApi public class RcsSipOptionsImplBase extends RcsCapabilityExchange { private static final String LOG_TAG = "RcsSipOptionsImplBase"; @@ -69,6 +73,11 @@ public class RcsSipOptionsImplBase extends RcsCapabilityExchange { */ public static final int RESPONSE_DOES_NOT_EXIST_ANYWHERE = 4; + /** + * Indicates that the remote user responded with a 400 BAD REQUEST response. + */ + public static final int RESPONSE_BAD_REQUEST = 5; + /** @hide*/ @Retention(RetentionPolicy.SOURCE) @IntDef(prefix = "RESPONSE_", value = { @@ -77,7 +86,8 @@ public class RcsSipOptionsImplBase extends RcsCapabilityExchange { RESPONSE_TEMPORARILY_UNAVAILABLE, RESPONSE_REQUEST_TIMEOUT, RESPONSE_NOT_FOUND, - RESPONSE_DOES_NOT_EXIST_ANYWHERE + RESPONSE_DOES_NOT_EXIST_ANYWHERE, + RESPONSE_BAD_REQUEST }) public @interface SipResponseCode {} @@ -188,7 +198,6 @@ public class RcsSipOptionsImplBase extends RcsCapabilityExchange { * @param reason A non-null String containing the reason associated with the SIP code. * @param operationToken The token provided by the framework when * {@link #onRemoteCapabilityRequest(Uri, RcsContactUceCapability, int)} was called. - * */ public void respondToCapabilityRequestWithError(@NonNull Uri contactUri, @SipResponseCode int code, @NonNull String reason, int operationToken) { |