Merge "[RCS UCE] Expose the OPTIONS APIs to support OPTIONS mechanism" am: c7baa4862f
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1574863 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I416fd516d93bd0505e3764fc607a2f5f13c3173e
This commit is contained in:
@@ -12257,10 +12257,16 @@ package android.telephony.ims.feature {
|
|||||||
package android.telephony.ims.stub {
|
package android.telephony.ims.stub {
|
||||||
|
|
||||||
public interface CapabilityExchangeEventListener {
|
public interface CapabilityExchangeEventListener {
|
||||||
|
method public void onRemoteCapabilityRequest(@NonNull android.net.Uri, @NonNull java.util.List<java.lang.String>, @NonNull android.telephony.ims.stub.CapabilityExchangeEventListener.OptionsRequestCallback) throws android.telephony.ims.ImsException;
|
||||||
method public void onRequestPublishCapabilities(int) throws android.telephony.ims.ImsException;
|
method public void onRequestPublishCapabilities(int) throws android.telephony.ims.ImsException;
|
||||||
method public void onUnpublish() throws android.telephony.ims.ImsException;
|
method public void onUnpublish() throws android.telephony.ims.ImsException;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static interface CapabilityExchangeEventListener.OptionsRequestCallback {
|
||||||
|
method public default void onRespondToCapabilityRequest(@NonNull android.telephony.ims.RcsContactUceCapability, boolean);
|
||||||
|
method public void onRespondToCapabilityRequestWithError(@IntRange(from=100, to=699) int, @NonNull String);
|
||||||
|
}
|
||||||
|
|
||||||
public interface DelegateConnectionMessageCallback {
|
public interface DelegateConnectionMessageCallback {
|
||||||
method public void onMessageReceived(@NonNull android.telephony.ims.SipMessage);
|
method public void onMessageReceived(@NonNull android.telephony.ims.SipMessage);
|
||||||
method public void onMessageSendFailure(@NonNull String, int);
|
method public void onMessageSendFailure(@NonNull String, int);
|
||||||
@@ -12446,6 +12452,7 @@ package android.telephony.ims.stub {
|
|||||||
public class RcsCapabilityExchangeImplBase {
|
public class RcsCapabilityExchangeImplBase {
|
||||||
ctor public RcsCapabilityExchangeImplBase(@NonNull java.util.concurrent.Executor);
|
ctor public RcsCapabilityExchangeImplBase(@NonNull java.util.concurrent.Executor);
|
||||||
method public void publishCapabilities(@NonNull String, @NonNull android.telephony.ims.stub.RcsCapabilityExchangeImplBase.PublishResponseCallback);
|
method public void publishCapabilities(@NonNull String, @NonNull android.telephony.ims.stub.RcsCapabilityExchangeImplBase.PublishResponseCallback);
|
||||||
|
method public void sendOptionsCapabilityRequest(@NonNull android.net.Uri, @NonNull java.util.List<java.lang.String>, @NonNull android.telephony.ims.stub.RcsCapabilityExchangeImplBase.OptionsResponseCallback);
|
||||||
method public void subscribeForCapabilities(@NonNull java.util.List<android.net.Uri>, @NonNull android.telephony.ims.stub.RcsCapabilityExchangeImplBase.SubscribeResponseCallback);
|
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_FETCH_ERROR = 3; // 0x3
|
||||||
field public static final int COMMAND_CODE_GENERIC_FAILURE = 1; // 0x1
|
field public static final int COMMAND_CODE_GENERIC_FAILURE = 1; // 0x1
|
||||||
@@ -12460,6 +12467,11 @@ package android.telephony.ims.stub {
|
|||||||
field public static final int COMMAND_CODE_SERVICE_UNKNOWN = 0; // 0x0
|
field public static final int COMMAND_CODE_SERVICE_UNKNOWN = 0; // 0x0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static interface RcsCapabilityExchangeImplBase.OptionsResponseCallback {
|
||||||
|
method public void onCommandError(int) throws android.telephony.ims.ImsException;
|
||||||
|
method public void onNetworkResponse(int, @NonNull String, @NonNull java.util.List<java.lang.String>) throws android.telephony.ims.ImsException;
|
||||||
|
}
|
||||||
|
|
||||||
public static interface RcsCapabilityExchangeImplBase.PublishResponseCallback {
|
public static interface RcsCapabilityExchangeImplBase.PublishResponseCallback {
|
||||||
method public void onCommandError(int) throws android.telephony.ims.ImsException;
|
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 onNetworkResponse(@IntRange(from=100, to=699) int, @NonNull String) throws android.telephony.ims.ImsException;
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import android.annotation.Nullable;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
|
import android.telephony.ims.ImsException;
|
||||||
import android.telephony.ims.RcsContactUceCapability;
|
import android.telephony.ims.RcsContactUceCapability;
|
||||||
import android.telephony.ims.stub.CapabilityExchangeEventListener;
|
import android.telephony.ims.stub.CapabilityExchangeEventListener;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -47,7 +48,7 @@ public class CapabilityExchangeAidlWrapper implements CapabilityExchangeEventLis
|
|||||||
* Receives the request of publishing capabilities from the network and deliver this request
|
* Receives the request of publishing capabilities from the network and deliver this request
|
||||||
* to the framework via the registered capability exchange event listener.
|
* to the framework via the registered capability exchange event listener.
|
||||||
*/
|
*/
|
||||||
public void onRequestPublishCapabilities(int publishTriggerType) {
|
public void onRequestPublishCapabilities(int publishTriggerType) throws ImsException {
|
||||||
ICapabilityExchangeEventListener listener = mListenerBinder;
|
ICapabilityExchangeEventListener listener = mListenerBinder;
|
||||||
if (listener == null) {
|
if (listener == null) {
|
||||||
return;
|
return;
|
||||||
@@ -56,13 +57,15 @@ public class CapabilityExchangeAidlWrapper implements CapabilityExchangeEventLis
|
|||||||
listener.onRequestPublishCapabilities(publishTriggerType);
|
listener.onRequestPublishCapabilities(publishTriggerType);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.w(LOG_TAG, "request publish capabilities exception: " + e);
|
Log.w(LOG_TAG, "request publish capabilities exception: " + e);
|
||||||
|
throw new ImsException("Remote is not available",
|
||||||
|
ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Receives the unpublish notification and deliver this callback to the framework.
|
* Receives the unpublish notification and deliver this callback to the framework.
|
||||||
*/
|
*/
|
||||||
public void onUnpublish() {
|
public void onUnpublish() throws ImsException {
|
||||||
ICapabilityExchangeEventListener listener = mListenerBinder;
|
ICapabilityExchangeEventListener listener = mListenerBinder;
|
||||||
if (listener == null) {
|
if (listener == null) {
|
||||||
return;
|
return;
|
||||||
@@ -71,6 +74,8 @@ public class CapabilityExchangeAidlWrapper implements CapabilityExchangeEventLis
|
|||||||
listener.onUnpublish();
|
listener.onUnpublish();
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.w(LOG_TAG, "Unpublish exception: " + e);
|
Log.w(LOG_TAG, "Unpublish exception: " + e);
|
||||||
|
throw new ImsException("Remote is not available",
|
||||||
|
ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,7 +84,8 @@ public class CapabilityExchangeAidlWrapper implements CapabilityExchangeEventLis
|
|||||||
* request to the framework.
|
* request to the framework.
|
||||||
*/
|
*/
|
||||||
public void onRemoteCapabilityRequest(@NonNull Uri contactUri,
|
public void onRemoteCapabilityRequest(@NonNull Uri contactUri,
|
||||||
@NonNull List<String> remoteCapabilities, @NonNull OptionsRequestCallback callback) {
|
@NonNull List<String> remoteCapabilities, @NonNull OptionsRequestCallback callback)
|
||||||
|
throws ImsException {
|
||||||
ICapabilityExchangeEventListener listener = mListenerBinder;
|
ICapabilityExchangeEventListener listener = mListenerBinder;
|
||||||
if (listener == null) {
|
if (listener == null) {
|
||||||
return;
|
return;
|
||||||
@@ -87,10 +93,11 @@ public class CapabilityExchangeAidlWrapper implements CapabilityExchangeEventLis
|
|||||||
|
|
||||||
IOptionsRequestCallback internalCallback = new IOptionsRequestCallback.Stub() {
|
IOptionsRequestCallback internalCallback = new IOptionsRequestCallback.Stub() {
|
||||||
@Override
|
@Override
|
||||||
public void respondToCapabilityRequest(RcsContactUceCapability ownCapabilities) {
|
public void respondToCapabilityRequest(RcsContactUceCapability ownCapabilities,
|
||||||
|
boolean isBlocked) {
|
||||||
final long callingIdentity = Binder.clearCallingIdentity();
|
final long callingIdentity = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
callback.onRespondToCapabilityRequest(ownCapabilities);
|
callback.onRespondToCapabilityRequest(ownCapabilities, isBlocked);
|
||||||
} finally {
|
} finally {
|
||||||
restoreCallingIdentity(callingIdentity);
|
restoreCallingIdentity(callingIdentity);
|
||||||
}
|
}
|
||||||
@@ -110,6 +117,8 @@ public class CapabilityExchangeAidlWrapper implements CapabilityExchangeEventLis
|
|||||||
listener.onRemoteCapabilityRequest(contactUri, remoteCapabilities, internalCallback);
|
listener.onRemoteCapabilityRequest(contactUri, remoteCapabilities, internalCallback);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.w(LOG_TAG, "Remote capability request exception: " + e);
|
Log.w(LOG_TAG, "Remote capability request exception: " + e);
|
||||||
|
throw new ImsException("Remote is not available",
|
||||||
|
ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,8 +27,9 @@ oneway interface IOptionsRequestCallback {
|
|||||||
* Respond to a remote capability request from the contact specified with the capabilities
|
* Respond to a remote capability request from the contact specified with the capabilities
|
||||||
* of this device.
|
* of this device.
|
||||||
* @param ownCapabilities The capabilities of this device.
|
* @param ownCapabilities The capabilities of this device.
|
||||||
|
* @param isBlocked True if the user has blocked the number sending this request.
|
||||||
*/
|
*/
|
||||||
void respondToCapabilityRequest(in RcsContactUceCapability ownCapabilities);
|
void respondToCapabilityRequest(in RcsContactUceCapability ownCapabilities, boolean isBlocked);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Respond to a remote capability request from the contact specified with the
|
* Respond to a remote capability request from the contact specified with the
|
||||||
|
|||||||
@@ -16,32 +16,58 @@
|
|||||||
|
|
||||||
package android.telephony.ims.stub;
|
package android.telephony.ims.stub;
|
||||||
|
|
||||||
|
import android.annotation.IntRange;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.SystemApi;
|
import android.annotation.SystemApi;
|
||||||
|
import android.net.Uri;
|
||||||
import android.telephony.ims.ImsException;
|
import android.telephony.ims.ImsException;
|
||||||
import android.telephony.ims.RcsContactUceCapability;
|
import android.telephony.ims.RcsContactUceCapability;
|
||||||
import android.telephony.ims.RcsUceAdapter;
|
import android.telephony.ims.RcsUceAdapter;
|
||||||
import android.telephony.ims.feature.ImsFeature;
|
import android.telephony.ims.feature.ImsFeature;
|
||||||
import android.telephony.ims.feature.RcsFeature;
|
import android.telephony.ims.feature.RcsFeature;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The interface of the capabilities event listener for ImsService to notify the framework of the
|
* The interface that is used by the framework to listen to events from the vendor RCS stack
|
||||||
* UCE request and status updated.
|
* regarding capabilities exchange using presence server and OPTIONS.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@SystemApi
|
@SystemApi
|
||||||
public interface CapabilityExchangeEventListener {
|
public interface CapabilityExchangeEventListener {
|
||||||
/**
|
/**
|
||||||
* Interface used by the framework to respond to OPTIONS requests.
|
* Interface used by the framework to respond to OPTIONS requests.
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
interface OptionsRequestCallback {
|
interface OptionsRequestCallback {
|
||||||
/**
|
/**
|
||||||
* Respond to a remote capability request from the contact specified with the
|
* Respond to a remote capability request from the contact specified with the
|
||||||
* capabilities of this device.
|
* capabilities of this device.
|
||||||
* @param ownCapabilities The capabilities of this device.
|
* @param ownCapabilities The capabilities of this device.
|
||||||
|
* @hide
|
||||||
*/
|
*/
|
||||||
void onRespondToCapabilityRequest(@NonNull RcsContactUceCapability ownCapabilities);
|
default void onRespondToCapabilityRequest(
|
||||||
|
@NonNull RcsContactUceCapability ownCapabilities) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Respond to a remote capability request from the contact specified with the
|
||||||
|
* capabilities of this device.
|
||||||
|
* @param ownCapabilities The capabilities of this device.
|
||||||
|
* @param isBlocked Whether or not the user has blocked the number requesting the
|
||||||
|
* capabilities of this device. If true, the device should respond to the OPTIONS
|
||||||
|
* request with a 200 OK response and no capabilities.
|
||||||
|
*/
|
||||||
|
default void onRespondToCapabilityRequest(@NonNull RcsContactUceCapability ownCapabilities,
|
||||||
|
boolean isBlocked) {
|
||||||
|
Log.w("CapabilityExchangeEventListener", "implement "
|
||||||
|
+ "onRespondToCapabilityRequest(RcsContactUceCapability, boolean) instead!");
|
||||||
|
// Fall back to old implementation
|
||||||
|
if (isBlocked) {
|
||||||
|
onRespondToCapabilityRequestWithError(200, "OK");
|
||||||
|
} else {
|
||||||
|
onRespondToCapabilityRequest(ownCapabilities);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Respond to a remote capability request from the contact specified with the
|
* Respond to a remote capability request from the contact specified with the
|
||||||
@@ -49,7 +75,8 @@ public interface CapabilityExchangeEventListener {
|
|||||||
* @param code The SIP response code to respond with.
|
* @param code The SIP response code to respond with.
|
||||||
* @param reason A non-null String containing the reason associated with the SIP code.
|
* @param reason A non-null String containing the reason associated with the SIP code.
|
||||||
*/
|
*/
|
||||||
void onRespondToCapabilityRequestWithError(int code, @NonNull String reason);
|
void onRespondToCapabilityRequestWithError(@IntRange(from = 100, to = 699) int code,
|
||||||
|
@NonNull String reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -59,8 +86,7 @@ public interface CapabilityExchangeEventListener {
|
|||||||
* This is typically used when trying to generate an initial PUBLISH for a new subscription to
|
* This is typically used when trying to generate an initial PUBLISH for a new subscription to
|
||||||
* the network. The device will cache all presence publications after boot until this method is
|
* the network. The device will cache all presence publications after boot until this method is
|
||||||
* called the first time.
|
* called the first time.
|
||||||
* @param publishTriggerType {@link RcsUceAdapter#StackPublishTriggerType} The reason for the
|
* @param publishTriggerType The reason for the capability update request.
|
||||||
* capability update request.
|
|
||||||
* @throws ImsException If this {@link RcsCapabilityExchangeImplBase} instance is not currently
|
* @throws ImsException If this {@link RcsCapabilityExchangeImplBase} instance is not currently
|
||||||
* connected to the framework. This can happen if the {@link RcsFeature} is not
|
* connected to the framework. This can happen if the {@link RcsFeature} is not
|
||||||
* {@link ImsFeature#STATE_READY} and the {@link RcsFeature} has not received the
|
* {@link ImsFeature#STATE_READY} and the {@link RcsFeature} has not received the
|
||||||
@@ -81,4 +107,25 @@ public interface CapabilityExchangeEventListener {
|
|||||||
* Telephony stack has crashed.
|
* Telephony stack has crashed.
|
||||||
*/
|
*/
|
||||||
void onUnpublish() throws ImsException;
|
void onUnpublish() throws ImsException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inform the framework of an OPTIONS query from a remote device for this device's UCE
|
||||||
|
* capabilities.
|
||||||
|
* <p>
|
||||||
|
* The framework will respond via the
|
||||||
|
* {@link OptionsRequestCallback#onRespondToCapabilityRequest} or
|
||||||
|
* {@link OptionsRequestCallback#onRespondToCapabilityRequestWithError}.
|
||||||
|
* @param contactUri The URI associated with the remote contact that is
|
||||||
|
* requesting capabilities.
|
||||||
|
* @param remoteCapabilities The remote contact's capability information.
|
||||||
|
* @param callback The callback of this request which is sent from the remote user.
|
||||||
|
* @throws ImsException If this {@link RcsCapabilityExchangeImplBase} instance is not
|
||||||
|
* currently connected to the framework. This can happen if the {@link RcsFeature} is not
|
||||||
|
* {@link ImsFeature#STATE_READY} and the {@link RcsFeature} has not received
|
||||||
|
* the {@link ImsFeature#onFeatureReady()} callback. This may also happen in rare
|
||||||
|
* cases when the Telephony stack has crashed.
|
||||||
|
*/
|
||||||
|
void onRemoteCapabilityRequest(@NonNull Uri contactUri,
|
||||||
|
@NonNull List<String> remoteCapabilities,
|
||||||
|
@NonNull OptionsRequestCallback callback) throws ImsException;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ package android.telephony.ims.stub;
|
|||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
import android.annotation.IntRange;
|
import android.annotation.IntRange;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.annotation.SystemApi;
|
import android.annotation.SystemApi;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
@@ -141,7 +140,7 @@ public class RcsCapabilityExchangeImplBase {
|
|||||||
* {@link #publishCapabilities(String, PublishResponseCallback)}.
|
* {@link #publishCapabilities(String, PublishResponseCallback)}.
|
||||||
*
|
*
|
||||||
* If this network response also contains a “Reason” header, then the
|
* If this network response also contains a “Reason” header, then the
|
||||||
* {@link onNetworkResponse(int, String, int, String)} method should be used instead.
|
* {@link #onNetworkResponse(int, String, int, String)} method should be used instead.
|
||||||
*
|
*
|
||||||
* @param sipCode The SIP response code sent from the network for the operation
|
* @param sipCode The SIP response code sent from the network for the operation
|
||||||
* token specified.
|
* token specified.
|
||||||
@@ -160,7 +159,7 @@ public class RcsCapabilityExchangeImplBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Provide the framework with a subsequent network response update to
|
* Provide the framework with a subsequent network response update to
|
||||||
* {@link #publishCapabilities(RcsContactUceCapability, int)} that also
|
* {@link #publishCapabilities(String, PublishResponseCallback)} that also
|
||||||
* includes a reason provided in the “reason” header. See RFC3326 for more
|
* includes a reason provided in the “reason” header. See RFC3326 for more
|
||||||
* information.
|
* information.
|
||||||
*
|
*
|
||||||
@@ -186,7 +185,6 @@ public class RcsCapabilityExchangeImplBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface used by the framework to respond to OPTIONS requests.
|
* Interface used by the framework to respond to OPTIONS requests.
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
public interface OptionsResponseCallback {
|
public interface OptionsResponseCallback {
|
||||||
/**
|
/**
|
||||||
@@ -217,7 +215,7 @@ public class RcsCapabilityExchangeImplBase {
|
|||||||
* cases when the Telephony stack has crashed.
|
* cases when the Telephony stack has crashed.
|
||||||
*/
|
*/
|
||||||
void onNetworkResponse(int sipCode, @NonNull String reason,
|
void onNetworkResponse(int sipCode, @NonNull String reason,
|
||||||
@Nullable List<String> theirCaps) throws ImsException;
|
@NonNull List<String> theirCaps) throws ImsException;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -243,7 +241,7 @@ public class RcsCapabilityExchangeImplBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Notify the framework of the response to the SUBSCRIBE request from
|
* Notify the framework of the response to the SUBSCRIBE request from
|
||||||
* {@link #subscribeForCapabilities(List<Uri>, SubscribeResponseCallback)}.
|
* {@link #subscribeForCapabilities(List, SubscribeResponseCallback)}.
|
||||||
* <p>
|
* <p>
|
||||||
* If the carrier network responds to the SUBSCRIBE request with a 2XX response, then the
|
* If the carrier network responds to the SUBSCRIBE request with a 2XX response, then the
|
||||||
* framework will expect the IMS stack to call {@link #onNotifyCapabilitiesUpdate},
|
* framework will expect the IMS stack to call {@link #onNotifyCapabilitiesUpdate},
|
||||||
@@ -251,7 +249,7 @@ public class RcsCapabilityExchangeImplBase {
|
|||||||
* subsequent NOTIFY responses to the subscription.
|
* subsequent NOTIFY responses to the subscription.
|
||||||
*
|
*
|
||||||
* If this network response also contains a “Reason” header, then the
|
* If this network response also contains a “Reason” header, then the
|
||||||
* {@link onNetworkResponse(int, String, int, String)} method should be used instead.
|
* {@link #onNetworkResponse(int, String, int, String)} method should be used instead.
|
||||||
*
|
*
|
||||||
* @param sipCode The SIP response code sent from the network for the operation
|
* @param sipCode The SIP response code sent from the network for the operation
|
||||||
* token specified.
|
* token specified.
|
||||||
@@ -268,7 +266,7 @@ public class RcsCapabilityExchangeImplBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Notify the framework of the response to the SUBSCRIBE request from
|
* Notify the framework of the response to the SUBSCRIBE request from
|
||||||
* {@link #subscribeForCapabilities(RcsContactUceCapability, int)} that also
|
* {@link #subscribeForCapabilities(List, SubscribeResponseCallback)} that also
|
||||||
* includes a reason provided in the “reason” header. See RFC3326 for more
|
* includes a reason provided in the “reason” header. See RFC3326 for more
|
||||||
* information.
|
* information.
|
||||||
*
|
*
|
||||||
@@ -294,7 +292,8 @@ public class RcsCapabilityExchangeImplBase {
|
|||||||
/**
|
/**
|
||||||
* Notify the framework of the latest XML PIDF documents included in the network response
|
* Notify the framework of the latest XML PIDF documents included in the network response
|
||||||
* for the requested contacts' capabilities requested by the Framework using
|
* for the requested contacts' capabilities requested by the Framework using
|
||||||
* {@link RcsUceAdapter#requestCapabilities(Executor, List<Uri>, CapabilitiesCallback)}.
|
* {@link RcsUceAdapter#requestCapabilities(List, Executor,
|
||||||
|
* RcsUceAdapter.CapabilitiesCallback)}.
|
||||||
* <p>
|
* <p>
|
||||||
* The expected format for the PIDF XML is defined in RFC3861. Each XML document must be a
|
* The expected format for the PIDF XML is defined in RFC3861. Each XML document must be a
|
||||||
* "application/pidf+xml" object and start with a root <presence> element. For NOTIFY
|
* "application/pidf+xml" object and start with a root <presence> element. For NOTIFY
|
||||||
@@ -336,7 +335,8 @@ public class RcsCapabilityExchangeImplBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* The subscription associated with a previous
|
* The subscription associated with a previous
|
||||||
* {@link RcsUceAdapter#requestCapabilities(Executor, List<Uri>, CapabilitiesCallback)}
|
* {@link RcsUceAdapter#requestCapabilities(List, Executor,
|
||||||
|
* RcsUceAdapter.CapabilitiesCallback)}
|
||||||
* operation has been terminated. This will mostly be due to the network sending a final
|
* operation has been terminated. This will mostly be due to the network sending a final
|
||||||
* NOTIFY response due to the subscription expiring, but this may also happen due to a
|
* NOTIFY response due to the subscription expiring, but this may also happen due to a
|
||||||
* network error.
|
* network error.
|
||||||
@@ -427,12 +427,11 @@ public class RcsCapabilityExchangeImplBase {
|
|||||||
* Push one's own capabilities to a remote user via the SIP OPTIONS presence exchange mechanism
|
* Push one's own capabilities to a remote user via the SIP OPTIONS presence exchange mechanism
|
||||||
* in order to receive the capabilities of the remote user in response.
|
* in order to receive the capabilities of the remote user in response.
|
||||||
* <p>
|
* <p>
|
||||||
* The implementer must call {@link #onNetworkResponse} to send the response of this
|
* The implementer must use {@link OptionsResponseCallback} to send the response of
|
||||||
* query back to the framework.
|
* this query from the network back to the framework.
|
||||||
* @param contactUri The URI of the remote user that we wish to get the capabilities of.
|
* @param contactUri The URI of the remote user that we wish to get the capabilities of.
|
||||||
* @param myCapabilities The capabilities of this device to send to the remote user.
|
* @param myCapabilities The capabilities of this device to send to the remote user.
|
||||||
* @param callback The callback of this request which is sent from the remote user.
|
* @param callback The callback of this request which is sent from the remote user.
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
// executor used is defined in the constructor.
|
// executor used is defined in the constructor.
|
||||||
@SuppressLint("ExecutorRegistration")
|
@SuppressLint("ExecutorRegistration")
|
||||||
|
|||||||
Reference in New Issue
Block a user