Merge "UCE API change: Remove the unused RCS UCE APIs"
This commit is contained in:
@@ -25,7 +25,6 @@ import android.os.Build;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
@@ -385,22 +384,6 @@ public final class RcsContactPresenceTuple implements Parcelable {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The optional timestamp indicating the data and time of the status change of this tuple.
|
||||
* Per RFC3863 section 4.1.7, the timestamp is formatted as an IMPP datetime format
|
||||
* string per RFC3339.
|
||||
* @hide
|
||||
*/
|
||||
public @NonNull Builder setTimestamp(@NonNull String timestamp) {
|
||||
try {
|
||||
mPresenceTuple.mTimestamp =
|
||||
DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(timestamp, Instant::from);
|
||||
} catch (DateTimeParseException e) {
|
||||
Log.d(LOG_TAG, "Parse timestamp failed " + e);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The optional timestamp indicating the data and time of the status change of this tuple.
|
||||
* Per RFC3863 section 4.1.7, the timestamp is formatted as an IMPP datetime format
|
||||
@@ -534,14 +517,6 @@ public final class RcsContactPresenceTuple implements Parcelable {
|
||||
return mContactUri;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the timestamp element contained in the tuple if it exists
|
||||
* @hide
|
||||
*/
|
||||
public @Nullable String getTimestamp() {
|
||||
return (mTimestamp == null) ? null : mTimestamp.toString();
|
||||
}
|
||||
|
||||
/** @return the timestamp element contained in the tuple if it exists */
|
||||
public @Nullable Instant getTime() {
|
||||
return mTimestamp;
|
||||
|
||||
@@ -439,8 +439,7 @@ public class RcsUceAdapter {
|
||||
|
||||
/**
|
||||
* The pending request has resulted in an error and may need to be retried, depending on the
|
||||
* error code. The callback {@link #onCapabilitiesReceived(List)}
|
||||
* for each contacts is required to be called before {@link #onError} is called.
|
||||
* error code.
|
||||
* @param errorCode The reason for the framework being unable to process the request.
|
||||
* @param retryIntervalMillis The time in milliseconds the requesting application should
|
||||
* wait before retrying, if non-zero.
|
||||
@@ -464,93 +463,6 @@ public class RcsUceAdapter {
|
||||
mPublishStateCallbacks = new HashMap<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Request the User Capability Exchange capabilities for one or more contacts.
|
||||
* <p>
|
||||
* This will return the cached capabilities of the contact and will not perform a capability
|
||||
* poll on the network unless there are contacts being queried with stale information.
|
||||
* <p>
|
||||
* Be sure to check the availability of this feature using
|
||||
* {@link ImsRcsManager#isAvailable(int, int)} and ensuring
|
||||
* {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_OPTIONS_UCE} or
|
||||
* {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_PRESENCE_UCE} is enabled or else
|
||||
* this operation will fail with {@link #ERROR_NOT_AVAILABLE} or {@link #ERROR_NOT_ENABLED}.
|
||||
*
|
||||
* @param contactNumbers A list of numbers that the capabilities are being requested for.
|
||||
* @param executor The executor that will be used when the request is completed and the
|
||||
* {@link CapabilitiesCallback} is called.
|
||||
* @param c A one-time callback for when the request for capabilities completes or there is an
|
||||
* error processing the request.
|
||||
* @throws ImsException if the subscription associated with this instance of
|
||||
* {@link RcsUceAdapter} is valid, but the ImsService associated with the subscription is not
|
||||
* available. This can happen if the ImsService has crashed, for example, or if the subscription
|
||||
* becomes inactive. See {@link ImsException#getCode()} for more information on the error codes.
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(allOf = {Manifest.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE,
|
||||
Manifest.permission.READ_CONTACTS})
|
||||
public void requestCapabilities(@NonNull List<Uri> contactNumbers,
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull CapabilitiesCallback c) throws ImsException {
|
||||
if (c == null) {
|
||||
throw new IllegalArgumentException("Must include a non-null CapabilitiesCallback.");
|
||||
}
|
||||
if (executor == null) {
|
||||
throw new IllegalArgumentException("Must include a non-null Executor.");
|
||||
}
|
||||
if (contactNumbers == null) {
|
||||
throw new IllegalArgumentException("Must include non-null contact number list.");
|
||||
}
|
||||
|
||||
IImsRcsController imsRcsController = getIImsRcsController();
|
||||
if (imsRcsController == null) {
|
||||
Log.e(TAG, "requestCapabilities: IImsRcsController is null");
|
||||
throw new ImsException("Can not find remote IMS service",
|
||||
ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
|
||||
IRcsUceControllerCallback internalCallback = new IRcsUceControllerCallback.Stub() {
|
||||
@Override
|
||||
public void onCapabilitiesReceived(List<RcsContactUceCapability> contactCapabilities) {
|
||||
final long callingIdentity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
executor.execute(() -> c.onCapabilitiesReceived(contactCapabilities));
|
||||
} finally {
|
||||
restoreCallingIdentity(callingIdentity);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onComplete() {
|
||||
final long callingIdentity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
executor.execute(() -> c.onComplete());
|
||||
} finally {
|
||||
restoreCallingIdentity(callingIdentity);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onError(int errorCode, long retryAfterMilliseconds) {
|
||||
final long callingIdentity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
executor.execute(() -> c.onError(errorCode, retryAfterMilliseconds));
|
||||
} finally {
|
||||
restoreCallingIdentity(callingIdentity);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
try {
|
||||
imsRcsController.requestCapabilities(mSubId, mContext.getOpPackageName(),
|
||||
mContext.getAttributionTag(), contactNumbers, internalCallback);
|
||||
} catch (ServiceSpecificException e) {
|
||||
throw new ImsException(e.toString(), e.errorCode);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Error calling IImsRcsController#requestCapabilities", e);
|
||||
throw new ImsException("Remote IMS Service is not available",
|
||||
ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request the User Capability Exchange capabilities for one or more contacts.
|
||||
* <p>
|
||||
|
||||
@@ -369,41 +369,6 @@ public class RcsCapabilityExchangeImplBase {
|
||||
mBinderExecutor = executor;
|
||||
}
|
||||
|
||||
/**
|
||||
* The user capabilities of one or multiple contacts have been requested by the framework.
|
||||
* <p>
|
||||
* The implementer must follow up this call with an
|
||||
* {@link SubscribeResponseCallback#onCommandError} call to indicate this operation has failed.
|
||||
* The response from the network to the SUBSCRIBE request must be sent back to the framework
|
||||
* using {@link SubscribeResponseCallback#onNetworkResponse(int, String)}.
|
||||
* As NOTIFY requests come in from the network, the requested contact’s capabilities should be
|
||||
* sent back to the framework using
|
||||
* {@link SubscribeResponseCallback#onNotifyCapabilitiesUpdate(List<String>}) and
|
||||
* {@link SubscribeResponseCallback#onResourceTerminated(List<Pair<Uri, String>>)}
|
||||
* should be called with the presence information for the contacts specified.
|
||||
* <p>
|
||||
* Once the subscription is terminated,
|
||||
* {@link SubscribeResponseCallback#onTerminated(String, long)} must be called for the
|
||||
* framework to finish listening for NOTIFY responses.
|
||||
*
|
||||
* @param uris A {@link List} of the {@link Uri}s that the framework is requesting the UCE
|
||||
* capabilities for.
|
||||
* @param cb The callback of the subscribe request.
|
||||
* @hide
|
||||
*/
|
||||
// executor used is defined in the constructor.
|
||||
@SuppressLint("ExecutorRegistration")
|
||||
public void subscribeForCapabilities(@NonNull List<Uri> uris,
|
||||
@NonNull SubscribeResponseCallback cb) {
|
||||
// Stub - to be implemented by service
|
||||
Log.w(LOG_TAG, "subscribeForCapabilities called with no implementation.");
|
||||
try {
|
||||
cb.onCommandError(COMMAND_CODE_NOT_SUPPORTED);
|
||||
} catch (ImsException e) {
|
||||
// Do not do anything, this is a stub implementation.
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The user capabilities of one or multiple contacts have been requested by the framework.
|
||||
* <p>
|
||||
|
||||
Reference in New Issue
Block a user