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

Commit a8053430 authored by James Lin's avatar James Lin Committed by Automerger Merge Worker
Browse files

Merge "Expose the RCS UCE APIs for capabilities request with presence...

Merge "Expose the RCS UCE APIs for capabilities request with presence mechanism." am: 4548fab7 am: 795855ec am: 108a1933

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I6be307948ed6bc4600294ec628585018be3cccde
parents 292aa4a1 108a1933
Loading
Loading
Loading
Loading
+116 −0
Original line number Diff line number Diff line
@@ -12964,11 +12964,100 @@ package android.telephony.ims {
    field public static final String RCS_PROFILE_2_3 = "UP_2.3";
  }
  public final class RcsContactPresenceTuple implements android.os.Parcelable {
    method public int describeContents();
    method @Nullable public android.net.Uri getContactUri();
    method @Nullable public android.telephony.ims.RcsContactPresenceTuple.ServiceCapabilities getServiceCapabilities();
    method @Nullable public String getServiceDescription();
    method @NonNull public String getServiceId();
    method @NonNull public String getServiceVersion();
    method @NonNull public String getStatus();
    method @Nullable public String getTimestamp();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.RcsContactPresenceTuple> CREATOR;
    field public static final String SERVICE_ID_CALL_COMPOSER = "org.3gpp.urn:urn-7:3gpp-service.ims.icsi.gsma.callcomposer";
    field public static final String SERVICE_ID_CHATBOT = "org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcs.chatbot";
    field public static final String SERVICE_ID_CHATBOT_ROLE = "org.gsma.rcs.isbot";
    field public static final String SERVICE_ID_CHATBOT_STANDALONE = " org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcs.chatbot.sa";
    field public static final String SERVICE_ID_CHAT_V1 = "org.openmobilealliance:IM-session";
    field public static final String SERVICE_ID_CHAT_V2 = "org.openmobilealliance:ChatSession";
    field public static final String SERVICE_ID_FT = "org.openmobilealliance:File-Transfer-HTTP";
    field public static final String SERVICE_ID_FT_OVER_SMS = "org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcs.ftsms";
    field public static final String SERVICE_ID_GEO_PUSH = "org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcs.geopush";
    field public static final String SERVICE_ID_GEO_PUSH_VIA_SMS = "org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcs.geosms";
    field public static final String SERVICE_ID_MMTEL = "org.3gpp.urn:urn-7:3gpp-service.ims.icsi.mmtel";
    field public static final String SERVICE_ID_POST_CALL = "org.3gpp.urn:urn-7:3gpp-service.ims.icsi.gsma.callunanswered";
    field public static final String SERVICE_ID_SHARED_MAP = "org.3gpp.urn:urn-7:3gpp-service.ims.icsi.gsma.sharedmap";
    field public static final String SERVICE_ID_SHARED_SKETCH = "org.3gpp.urn:urn-7:3gpp-service.ims.icsi.gsma.sharedsketch";
    field public static final String TUPLE_BASIC_STATUS_CLOSED = "closed";
    field public static final String TUPLE_BASIC_STATUS_OPEN = "open";
  }
  public static final class RcsContactPresenceTuple.Builder {
    ctor public RcsContactPresenceTuple.Builder(@NonNull String, @NonNull String, @NonNull String);
    method @NonNull public android.telephony.ims.RcsContactPresenceTuple build();
    method @NonNull public android.telephony.ims.RcsContactPresenceTuple.Builder setContactUri(@NonNull android.net.Uri);
    method @NonNull public android.telephony.ims.RcsContactPresenceTuple.Builder setServiceCapabilities(@NonNull android.telephony.ims.RcsContactPresenceTuple.ServiceCapabilities);
    method @NonNull public android.telephony.ims.RcsContactPresenceTuple.Builder setServiceDescription(@NonNull String);
    method @NonNull public android.telephony.ims.RcsContactPresenceTuple.Builder setTimestamp(@NonNull String);
  }
  public static final class RcsContactPresenceTuple.ServiceCapabilities implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<java.lang.String> getSupportedDuplexModes();
    method @NonNull public java.util.List<java.lang.String> getUnsupportedDuplexModes();
    method public boolean isAudioCapable();
    method public boolean isVideoCapable();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.RcsContactPresenceTuple.ServiceCapabilities> CREATOR;
    field public static final String DUPLEX_MODE_FULL = "full";
    field public static final String DUPLEX_MODE_HALF = "half";
    field public static final String DUPLEX_MODE_RECEIVE_ONLY = "receive-only";
    field public static final String DUPLEX_MODE_SEND_ONLY = "send-only";
  }
  public static final class RcsContactPresenceTuple.ServiceCapabilities.Builder {
    ctor public RcsContactPresenceTuple.ServiceCapabilities.Builder(boolean, boolean);
    method @NonNull public android.telephony.ims.RcsContactPresenceTuple.ServiceCapabilities.Builder addSupportedDuplexMode(@NonNull String);
    method @NonNull public android.telephony.ims.RcsContactPresenceTuple.ServiceCapabilities.Builder addUnsupportedDuplexMode(@NonNull String);
    method @NonNull public android.telephony.ims.RcsContactPresenceTuple.ServiceCapabilities build();
  }
  public final class RcsContactUceCapability implements android.os.Parcelable {
    method public int describeContents();
    method public int getCapabilityMechanism();
    method @Nullable public android.telephony.ims.RcsContactPresenceTuple getCapabilityTuple(@NonNull String);
    method @NonNull public java.util.List<android.telephony.ims.RcsContactPresenceTuple> getCapabilityTuples();
    method @NonNull public android.net.Uri getContactUri();
    method public int getRequestResult();
    method public int getSourceType();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field public static final int CAPABILITY_MECHANISM_OPTIONS = 2; // 0x2
    field public static final int CAPABILITY_MECHANISM_PRESENCE = 1; // 0x1
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.RcsContactUceCapability> CREATOR;
    field public static final int REQUEST_RESULT_FOUND = 3; // 0x3
    field public static final int REQUEST_RESULT_NOT_FOUND = 2; // 0x2
    field public static final int REQUEST_RESULT_NOT_ONLINE = 1; // 0x1
    field public static final int REQUEST_RESULT_UNKNOWN = 0; // 0x0
    field public static final int SOURCE_TYPE_CACHED = 1; // 0x1
    field public static final int SOURCE_TYPE_NETWORK = 0; // 0x0
  }
  public static final class RcsContactUceCapability.PresenceBuilder {
    ctor public RcsContactUceCapability.PresenceBuilder(@NonNull android.net.Uri, int, int);
    method @NonNull public android.telephony.ims.RcsContactUceCapability.PresenceBuilder addCapabilityTuple(@NonNull android.telephony.ims.RcsContactPresenceTuple);
    method @NonNull public android.telephony.ims.RcsContactUceCapability.PresenceBuilder addCapabilityTuples(@NonNull java.util.List<android.telephony.ims.RcsContactPresenceTuple>);
    method @NonNull public android.telephony.ims.RcsContactUceCapability build();
  }
  public class RcsUceAdapter {
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void addOnPublishStateChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RcsUceAdapter.OnPublishStateChangedListener) throws android.telephony.ims.ImsException;
    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 void removeOnPublishStateChangedListener(@NonNull android.telephony.ims.RcsUceAdapter.OnPublishStateChangedListener) throws android.telephony.ims.ImsException;
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void requestAvailability(@NonNull android.net.Uri, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RcsUceAdapter.CapabilitiesCallback) throws android.telephony.ims.ImsException;
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void requestCapabilities(@NonNull java.util.List<android.net.Uri>, @NonNull java.util.concurrent.Executor, @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 CAPABILITY_TYPE_PRESENCE_UCE = 2; // 0x2
    field public static final int CAPABILITY_UPDATE_TRIGGER_ETAG_EXPIRED = 1; // 0x1
    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_2G = 7; // 0x7
    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_3G = 6; // 0x6
@@ -12981,6 +13070,18 @@ package android.telephony.ims {
    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 = 8; // 0x8
    field public static final int CAPABILITY_UPDATE_TRIGGER_UNKNOWN = 0; // 0x0
    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 = 10; // 0xa
    field public static final int ERROR_LOST_NETWORK = 11; // 0xb
    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 = 9; // 0x9
    field public static final int ERROR_REQUEST_TOO_LARGE = 8; // 0x8
    field public static final int ERROR_SERVER_UNAVAILABLE = 12; // 0xc
    field public static final int PUBLISH_STATE_NOT_PUBLISHED = 2; // 0x2
    field public static final int PUBLISH_STATE_OK = 1; // 0x1
    field public static final int PUBLISH_STATE_OTHER_ERROR = 6; // 0x6
@@ -12989,6 +13090,12 @@ package android.telephony.ims {
    field public static final int PUBLISH_STATE_VOICE_PROVISION_ERROR = 3; // 0x3
  }
  public static interface RcsUceAdapter.CapabilitiesCallback {
    method public void onCapabilitiesReceived(@NonNull java.util.List<android.telephony.ims.RcsContactUceCapability>);
    method public void onComplete();
    method public void onError(int, long);
  }
  public static interface RcsUceAdapter.OnPublishStateChangedListener {
    method public void onPublishStateChange(int);
  }
@@ -13400,6 +13507,7 @@ package android.telephony.ims.stub {
  public class RcsCapabilityExchangeImplBase {
    ctor public RcsCapabilityExchangeImplBase(@NonNull java.util.concurrent.Executor);
    method public void publishCapabilities(@NonNull String, @NonNull android.telephony.ims.stub.RcsCapabilityExchangeImplBase.PublishResponseCallback);
    method public void subscribeForCapabilities(@NonNull java.util.List<android.net.Uri>, @NonNull android.telephony.ims.stub.RcsCapabilityExchangeImplBase.SubscribeResponseCallback);
    field public static final int COMMAND_CODE_FETCH_ERROR = 3; // 0x3
    field public static final int COMMAND_CODE_GENERIC_FAILURE = 1; // 0x1
    field public static final int COMMAND_CODE_INSUFFICIENT_MEMORY = 5; // 0x5
@@ -13418,6 +13526,14 @@ package android.telephony.ims.stub {
    method public void onNetworkResponse(@IntRange(from=100, to=699) int, @NonNull String) throws android.telephony.ims.ImsException;
  }
  public static interface RcsCapabilityExchangeImplBase.SubscribeResponseCallback {
    method public void onCommandError(int) throws android.telephony.ims.ImsException;
    method public void onNetworkResponse(@IntRange(from=100, to=699) int, @NonNull String) throws android.telephony.ims.ImsException;
    method public void onNotifyCapabilitiesUpdate(@NonNull java.util.List<java.lang.String>) throws android.telephony.ims.ImsException;
    method public void onResourceTerminated(@NonNull java.util.List<android.util.Pair<android.net.Uri,java.lang.String>>) throws android.telephony.ims.ImsException;
    method public void onTerminated(@NonNull String, long) throws android.telephony.ims.ImsException;
  }
  public interface SipDelegate {
    method public void closeDialog(@NonNull String);
    method public void notifyMessageReceiveError(@NonNull String, int);
+135 −9
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.telephony.ims;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.StringDef;
import android.annotation.SystemApi;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
@@ -34,14 +35,135 @@ import java.util.List;
 * network during a SUBSCRIBE request. See RFC3863 for more information.
 * @hide
 */
@SystemApi
public final class RcsContactPresenceTuple implements Parcelable {

    /** The service id of the MMTEL */
    /**
     * The service ID used to indicate that MMTEL service is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_MMTEL = "org.3gpp.urn:urn-7:3gpp-service.ims.icsi.mmtel";

    /** The service id of the Call Composer */
    /**
     * The service ID used to indicate that the chat(v1.0) is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_CHAT_V1 = "org.openmobilealliance:IM-session";

    /**
     * The service ID used to indicate that the chat(v2.0) is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_CHAT_V2 = "org.openmobilealliance:ChatSession";

    /**
     * The service ID used to indicate that the File Transfer is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_FT = "org.openmobilealliance:File-Transfer-HTTP";

    /**
     * The service ID used to indicate that the File Transfer over SMS is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_FT_OVER_SMS =
            "org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcs.ftsms";

    /**
     * The service ID used to indicate that the Geolocation Push is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_GEO_PUSH =
            "org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcs.geopush";

    /**
     * The service ID used to indicate that the Geolocation Push via SMS is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_GEO_PUSH_VIA_SMS =
            "org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcs.geosms";

    /**
     * The service ID used to indicate that the Call Composer is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_CALL_COMPOSER =
            "org.3gpp.urn:urn-7:3gppservice.ims.icsi.gsma.callcomposer";
            "org.3gpp.urn:urn-7:3gpp-service.ims.icsi.gsma.callcomposer";

    /**
     * The service ID used to indicate that the Post Call is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_POST_CALL =
            "org.3gpp.urn:urn-7:3gpp-service.ims.icsi.gsma.callunanswered";

    /**
     * The service ID used to indicate that the Shared Map is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_SHARED_MAP =
            "org.3gpp.urn:urn-7:3gpp-service.ims.icsi.gsma.sharedmap";

    /**
     * The service ID used to indicate that the Shared Sketch is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_SHARED_SKETCH =
            "org.3gpp.urn:urn-7:3gpp-service.ims.icsi.gsma.sharedsketch";

    /**
     * The service ID used to indicate that the Chatbot using Session is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_CHATBOT =
            "org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcs.chatbot";

    /**
     * The service ID used to indicate that the Standalone Messaging is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_CHATBOT_STANDALONE =
            " org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcs.chatbot.sa";

    /**
     * The service ID used to indicate that the Chatbot Role is available.
     * <p>
     * See the GSMA RCC.07 specification for more information.
     */
    public static final String SERVICE_ID_CHATBOT_ROLE = "org.gsma.rcs.isbot";

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @StringDef(prefix = "SERVICE_ID_", value = {
            SERVICE_ID_MMTEL,
            SERVICE_ID_CHAT_V1,
            SERVICE_ID_CHAT_V2,
            SERVICE_ID_FT,
            SERVICE_ID_FT_OVER_SMS,
            SERVICE_ID_GEO_PUSH,
            SERVICE_ID_GEO_PUSH_VIA_SMS,
            SERVICE_ID_CALL_COMPOSER,
            SERVICE_ID_POST_CALL,
            SERVICE_ID_SHARED_MAP,
            SERVICE_ID_SHARED_SKETCH,
            SERVICE_ID_CHATBOT,
            SERVICE_ID_CHATBOT_STANDALONE,
            SERVICE_ID_CHATBOT_ROLE
    })
    public @interface ServiceId {}

    /** The service capabilities is available. */
    public static final String TUPLE_BASIC_STATUS_OPEN = "open";
@@ -149,6 +271,7 @@ public final class RcsContactPresenceTuple implements Parcelable {
            in.readStringList(mSupportedDuplexModeList);
            in.readStringList(mUnsupportedDuplexModeList);
        }

        @Override
        public void writeToParcel(@NonNull Parcel out, int flags) {
            out.writeBoolean(mIsAudioCapable);
@@ -217,12 +340,14 @@ public final class RcsContactPresenceTuple implements Parcelable {

        /**
         * Builds a RcsContactPresenceTuple instance.
         * @param status The status associated with the service capability. See RFC3865 for more
         * information.
         * @param serviceId The OMA Presence service-id associated with this capability. See the
         * OMA Presence SIMPLE specification v1.1, section 10.5.1.
         * @param serviceVersion The OMA Presence version associated with the service capability.
         * See the OMA Presence SIMPLE specification v1.1, section 10.5.1.
         */
        public Builder(@NonNull @BasicStatus String status, @NonNull String serviceId,
        public Builder(@NonNull @BasicStatus String status, @NonNull @ServiceId String serviceId,
                @NonNull String serviceVersion) {
            mPresenceTuple = new RcsContactPresenceTuple(status, serviceId, serviceVersion);
        }
@@ -230,16 +355,17 @@ public final class RcsContactPresenceTuple implements Parcelable {
        /**
         * The optional SIP Contact URI associated with the PIDF tuple element.
         */
        public @NonNull Builder addContactUri(@NonNull Uri contactUri) {
        public @NonNull Builder setContactUri(@NonNull Uri contactUri) {
            mPresenceTuple.mContactUri = contactUri;
            return this;
        }

        /**
         * The optional timestamp indicating the data and time of the status change of this tuple.
         * See RFC3863, section 4.1.7 for more information on the expected format.
         * Per RFC3863 section 4.1.7, the timestamp is formatted as an IMPP datetime format
         * string per RFC3339.
         */
        public @NonNull Builder addTimeStamp(@NonNull String timestamp) {
        public @NonNull Builder setTimestamp(@NonNull String timestamp) {
            mPresenceTuple.mTimestamp = timestamp;
            return this;
        }
@@ -248,7 +374,7 @@ public final class RcsContactPresenceTuple implements Parcelable {
         * An optional parameter containing the description element of the service-description. See
         * OMA Presence SIMPLE specification v1.1
         */
        public @NonNull Builder addDescription(@NonNull String description) {
        public @NonNull Builder setServiceDescription(@NonNull String description) {
            mPresenceTuple.mServiceDescription = description;
            return this;
        }
@@ -257,7 +383,7 @@ public final class RcsContactPresenceTuple implements Parcelable {
         * An optional parameter containing the service capabilities of the presence tuple if they
         * are present in the servcaps element.
         */
        public @NonNull Builder addServiceCapabilities(@NonNull ServiceCapabilities caps) {
        public @NonNull Builder setServiceCapabilities(@NonNull ServiceCapabilities caps) {
            mPresenceTuple.mServiceCapabilities = caps;
            return this;
        }
+22 −26

File changed.

Preview size limit exceeded, changes collapsed.

+33 −16

File changed.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ interface IImsRcsController {
    // ImsUceAdapter specific
    void requestCapabilities(int subId, String callingPackage, String callingFeatureId,
            in List<Uri> contactNumbers, IRcsUceControllerCallback c);
    void requestNetworkAvailability(int subId, String callingPackage,
    void requestAvailability(int subId, String callingPackage,
            String callingFeatureId, in Uri contactNumber,
            IRcsUceControllerCallback c);
    int getUcePublishState(int subId);
Loading