Add back UCE logic into Test App
Logic was commented out when API wasn't solidified. Add this
API logic back.
Test: use test app
Change-Id: I2ce6bc5327a4230b07d12dc7b69955c713fa68de
diff --git a/testapps/TestRcsApp/TestApp/AndroidManifest.xml b/testapps/TestRcsApp/TestApp/AndroidManifest.xml
index d71d051..2ff1df0 100644
--- a/testapps/TestRcsApp/TestApp/AndroidManifest.xml
+++ b/testapps/TestRcsApp/TestApp/AndroidManifest.xml
@@ -19,8 +19,8 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.sample.rcsclient"
- android:versionCode="1"
- android:versionName="1.0.0">
+ android:versionCode="2"
+ android:versionName="1.0.1">
<uses-sdk
android:minSdkVersion="30"
diff --git a/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/UceActivity.java b/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/UceActivity.java
index 04efb6e..9edb817 100644
--- a/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/UceActivity.java
+++ b/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/UceActivity.java
@@ -19,8 +19,12 @@
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsManager;
+import android.telephony.ims.ImsException;
import android.telephony.ims.ImsManager;
import android.telephony.ims.ImsRcsManager;
+import android.telephony.ims.RcsContactPresenceTuple;
+import android.telephony.ims.RcsContactUceCapability;
+import android.telephony.ims.RcsUceAdapter;
import android.text.TextUtils;
import android.util.Log;
import android.view.MenuItem;
@@ -36,8 +40,6 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-//import android.telephony.ims.RcsUceAdapter.CapabilitiesCallback;
-
/** An activity to verify UCE. */
public class UceActivity extends AppCompatActivity {
@@ -72,62 +74,81 @@
List<Uri> contactList = getContectList();
mImsRcsManager = getImsRcsManager(mDefaultSmsSubId);
-// mCapabilityButton.setOnClickListener(view -> {
-// if(contactList.size() == 0) {
-// Log.i(TAG, "empty contact list");
-// return;
-// }
-// mImsRcsManager.getUceAdapter().requestCapabilities(mExecutorService, contactList,
-// new CapabilitiesCallback() {
-// public void onCapabilitiesReceived(
-// @NonNull List<RcsContactUceCapability> contactCapabilities) {
-// Log.i(TAG, "onCapabilitiesReceived()");
-// mCapabilityResult.setText("onCapabilitiesReceived()");
-// }
-//
-// public void onComplete() {
-// Log.i(TAG, "onComplete()");
-// mCapabilityResult.setText("onComplete()");
-//
-// }
-//
-// public void onError(int errorCode, long retryAfterMilliseconds) {
-// Log.i(TAG, "onError() errorCode:" + errorCode + " retryAfterMs:"
-// + retryAfterMilliseconds);
-// mCapabilityResult.setText("onError() errorCode:" + errorCode
-// + " retryAfterMs:" + retryAfterMilliseconds);
-// }
-// });
-// });
-//
-// mAvailabilityButton.setOnClickListener(view -> {
-// if(contactList.size() == 0) {
-// Log.i(TAG, "empty contact list");
-// return;
-// }
-// mImsRcsManager.getUceAdapter().requestNetworkAvailability(mExecutorService,
-// contactList,
-// new CapabilitiesCallback() {
-// public void onCapabilitiesReceived(
-// @NonNull List<RcsContactUceCapability> contactCapabilities) {
-// Log.i(TAG, "onCapabilitiesReceived()");
-// mAvailabilityResult.setText("onCapabilitiesReceived()");
-// }
-//
-// public void onComplete() {
-// Log.i(TAG, "onComplete()");
-// mAvailabilityResult.setText("onComplete()");
-//
-// }
-//
-// public void onError(int errorCode, long retryAfterMilliseconds) {
-// Log.i(TAG, "onError() errorCode:" + errorCode + " retryAfterMs:"
-// + retryAfterMilliseconds);
-// mAvailabilityResult.setText("onError() errorCode:" + errorCode
-// + " retryAfterMs:" + retryAfterMilliseconds);
-// }
-// });
-// });
+ mCapabilityButton.setOnClickListener(view -> {
+ if (contactList.size() == 0) {
+ Log.i(TAG, "empty contact list");
+ return;
+ }
+ mCapabilityResult.setText("pending...\n");
+ try {
+ mImsRcsManager.getUceAdapter().requestCapabilities(contactList, mExecutorService,
+ new RcsUceAdapter.CapabilitiesCallback() {
+ public void onCapabilitiesReceived(
+ List<RcsContactUceCapability> contactCapabilities) {
+ Log.i(TAG, "onCapabilitiesReceived()");
+ StringBuilder b = new StringBuilder("onCapabilitiesReceived:\n");
+ for (RcsContactUceCapability c : contactCapabilities) {
+ b.append(getReadableCapability(c));
+ b.append("\n");
+ }
+ mCapabilityResult.append(b.toString() + "\n");
+ }
+
+ public void onComplete() {
+ Log.i(TAG, "onComplete()");
+ mCapabilityResult.append("complete");
+
+ }
+
+ public void onError(int errorCode, long retryAfterMilliseconds) {
+ Log.i(TAG, "onError() errorCode:" + errorCode + " retryAfterMs:"
+ + retryAfterMilliseconds);
+ mCapabilityResult.append("error - errorCode:" + errorCode
+ + " retryAfterMs:" + retryAfterMilliseconds);
+ }
+ });
+ } catch (ImsException e) {
+ mCapabilityResult.setText("ImsException:" + e);
+ }
+ });
+
+ mAvailabilityButton.setOnClickListener(view -> {
+ if (contactList.size() == 0) {
+ Log.i(TAG, "empty contact list");
+ return;
+ }
+ mAvailabilityResult.setText("pending...\n");
+ try {
+ mImsRcsManager.getUceAdapter().requestAvailability(contactList.get(0),
+ mExecutorService, new RcsUceAdapter.CapabilitiesCallback() {
+ public void onCapabilitiesReceived(
+ List<RcsContactUceCapability> contactCapabilities) {
+ Log.i(TAG, "onCapabilitiesReceived()");
+ StringBuilder b = new StringBuilder("onCapabilitiesReceived:\n");
+ for (RcsContactUceCapability c : contactCapabilities) {
+ b.append(getReadableCapability(c));
+ b.append("\n");
+ }
+ mAvailabilityResult.append(b.toString() + "\n");
+ }
+
+ public void onComplete() {
+ Log.i(TAG, "onComplete()");
+ mAvailabilityResult.append("complete");
+
+ }
+
+ public void onError(int errorCode, long retryAfterMilliseconds) {
+ Log.i(TAG, "onError() errorCode:" + errorCode + " retryAfterMs:"
+ + retryAfterMilliseconds);
+ mAvailabilityResult.append("error - errorCode:" + errorCode
+ + " retryAfterMs:" + retryAfterMilliseconds);
+ }
+ });
+ } catch (ImsException e) {
+ mAvailabilityResult.setText("ImsException:" + e);
+ }
+ });
}
private List<Uri> getContectList() {
@@ -165,4 +186,36 @@
}
return super.onOptionsItemSelected(item);
}
+
+ private String getReadableCapability(RcsContactUceCapability c) {
+ StringBuilder b = new StringBuilder("RcsContactUceCapability: uri=");
+ b.append(c.getContactUri());
+ b.append(", requestResult=");
+ b.append(c.getRequestResult());
+ b.append(", sourceType=");
+ b.append(c.getSourceType());
+ if (c.getCapabilityMechanism() == RcsContactUceCapability.CAPABILITY_MECHANISM_PRESENCE) {
+ b.append(", tuples={");
+ for (RcsContactPresenceTuple t : c.getCapabilityTuples()) {
+ b.append("[uri=");
+ b.append(t.getContactUri());
+ b.append(", serviceId=");
+ b.append(t.getServiceId());
+ b.append(", serviceVersion=");
+ b.append(t.getServiceVersion());
+ if (t.getServiceCapabilities() != null) {
+ RcsContactPresenceTuple.ServiceCapabilities servCaps =
+ t.getServiceCapabilities();
+ b.append(", servCaps=(supported=");
+ b.append(servCaps.getSupportedDuplexModes());
+ b.append("), servCaps=(unsupported=");
+ b.append(servCaps.getUnsupportedDuplexModes());
+ b.append("))");
+ }
+ b.append("]");
+ }
+ b.append("}");
+ }
+ return b.toString();
+ }
}