To support Carrier config bundle for MmTel and Rcs
To support Carrier config bundle KEY_[MMTEL/RCS]_REQUIRES_PROVISIONING_BUNDLE
Bug: 214885306
Test: atest ImsProvisioningControllerTest
Change-Id: I907a32474a68af51e182169f146ad2fc957e5f8d
Merged-In: I907a32474a68af51e182169f146ad2fc957e5f8d
diff --git a/src/com/android/phone/ImsProvisioningController.java b/src/com/android/phone/ImsProvisioningController.java
index 2595e4b..98a6e89 100644
--- a/src/com/android/phone/ImsProvisioningController.java
+++ b/src/com/android/phone/ImsProvisioningController.java
@@ -29,6 +29,7 @@
import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT;
import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO;
import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE;
+import static android.telephony.ims.feature.RcsFeature.RcsImsCapabilities.CAPABILITY_TYPE_OPTIONS_UCE;
import static android.telephony.ims.feature.RcsFeature.RcsImsCapabilities.CAPABILITY_TYPE_PRESENCE_UCE;
import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM;
import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN;
@@ -48,6 +49,7 @@
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.telephony.CarrierConfigManager;
+import android.telephony.CarrierConfigManager.Ims;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyRegistryManager;
import android.telephony.ims.ProvisioningManager;
@@ -70,6 +72,7 @@
import com.android.telephony.Rlog;
import java.util.Arrays;
+import java.util.Map;
import java.util.concurrent.Executor;
/**
@@ -116,6 +119,32 @@
};
/**
+ * map the MmTelCapabilities.MmTelCapability and
+ * CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT
+ * CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT
+ * CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_UT_INT
+ * CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_SMS_INT
+ * CarrierConfigManager.Ims.KEY_CAPABILITY_CALL_COMPOSER_INT
+ */
+ private static final Map<Integer, String> KEYS_MMTEL_CAPABILITY = Map.of(
+ CAPABILITY_TYPE_VOICE, Ims.KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY,
+ CAPABILITY_TYPE_VIDEO, Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ CAPABILITY_TYPE_UT, Ims.KEY_CAPABILITY_TYPE_UT_INT_ARRAY,
+ CAPABILITY_TYPE_SMS, Ims.KEY_CAPABILITY_TYPE_SMS_INT_ARRAY,
+ CAPABILITY_TYPE_CALL_COMPOSER, Ims.KEY_CAPABILITY_CALL_COMPOSER_INT_ARRAY
+ );
+
+ /**
+ * map the RcsImsCapabilities.RcsImsCapabilityFlag and
+ * CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_OPTIONS_UCE
+ * CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE
+ */
+ private static final Map<Integer, String> KEYS_RCS_CAPABILITY = Map.of(
+ CAPABILITY_TYPE_OPTIONS_UCE, Ims.KEY_CAPABILITY_TYPE_OPTIONS_UCE_INT_ARRAY,
+ CAPABILITY_TYPE_PRESENCE_UCE, Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY
+ );
+
+ /**
* Create a FeatureConnector for this class to use to connect to an ImsManager.
*/
@VisibleForTesting
@@ -838,7 +867,7 @@
}
/**
- * return the boolean whether MmTel capability is required provisiong or not
+ * return the boolean whether MmTel capability is required provisioning or not
*/
@VisibleForTesting
public boolean isImsProvisioningRequiredForCapability(int subId, int capability, int tech) {
@@ -869,7 +898,7 @@
}
/**
- * return the boolean whether RCS capability is required provisiong or not
+ * return the boolean whether RCS capability is required provisioning or not
*/
@VisibleForTesting
public boolean isRcsProvisioningRequiredForCapability(int subId, int capability, int tech) {
@@ -1170,29 +1199,18 @@
}
private boolean isProvisioningRequired(int subId, int capability, int tech, boolean isMmTel) {
- String[] dataArray;
- if (isMmTel) {
- dataArray = getMmTelStringArrayFromCarrierConfig(subId);
- } else {
- dataArray = getRcsStringArrayFromCarrierConfig(subId);
- }
- if (dataArray == null) {
- logw("isProvisioningRequired : retrieve data from carrier config failed");
-
- // KEY_MMTEL/RCS_REQUIRES_PROVISIONING_STRING_ARRAY is not exist in CarrierConfig that
- // means provisioning is not required
+ int[] techArray;
+ techArray = getTechsFromCarrierConfig(subId, capability, isMmTel);
+ if (techArray == null) {
+ logw("isProvisioningRequired : getTechsFromCarrierConfig failed");
+ // not exist in CarrierConfig that means provisioning is not required
return false;
}
- // create String with capability and tech
- String comp = capability + "," + tech;
-
// compare with carrier config
- for (String data : dataArray) {
- // existing same String {capability,tech} means provisioning required
- if (data.replaceAll("\\s", "").equals(comp)) {
- return true;
- }
+ if (Arrays.stream(techArray).anyMatch(keyValue -> keyValue == tech)) {
+ // existing same tech means provisioning required
+ return true;
}
log("isProvisioningRequired : not matched capability " + capability + " tech " + tech);
@@ -1200,19 +1218,35 @@
}
@VisibleForTesting
- protected String[] getMmTelStringArrayFromCarrierConfig(int subId) {
- PersistableBundle imsCarrierConfigs = mCarrierConfigManager.getConfigByComponentForSubId(
- CarrierConfigManager.Ims.KEY_PREFIX, subId);
- return imsCarrierConfigs.getStringArray(
- CarrierConfigManager.Ims.KEY_MMTEL_REQUIRES_PROVISIONING_STRING_ARRAY);
- }
+ protected int[] getTechsFromCarrierConfig(int subId, int capability, boolean isMmTel) {
+ String featureKey;
+ String capabilityKey;
+ if (isMmTel) {
+ featureKey = CarrierConfigManager.Ims.KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE;
+ capabilityKey = KEYS_MMTEL_CAPABILITY.get(capability);
+ } else {
+ featureKey = CarrierConfigManager.Ims.KEY_RCS_REQUIRES_PROVISIONING_BUNDLE;
+ capabilityKey = KEYS_RCS_CAPABILITY.get(capability);
+ }
- @VisibleForTesting
- protected String[] getRcsStringArrayFromCarrierConfig(int subId) {
- PersistableBundle imsCarrierConfigs = mCarrierConfigManager.getConfigByComponentForSubId(
- CarrierConfigManager.Ims.KEY_PREFIX, subId);
- return imsCarrierConfigs.getStringArray(
- CarrierConfigManager.Ims.KEY_RCS_REQUIRES_PROVISIONING_STRING_ARRAY);
+ if (capabilityKey != null) {
+ PersistableBundle imsCarrierConfigs = mCarrierConfigManager.getConfigForSubId(subId);
+ if (imsCarrierConfigs == null) {
+ log("getTechsFromCarrierConfig : imsCarrierConfigs null");
+ return null;
+ }
+
+ PersistableBundle provisioningBundle =
+ imsCarrierConfigs.getPersistableBundle(featureKey);
+ if (provisioningBundle == null) {
+ log("getTechsFromCarrierConfig : provisioningBundle null");
+ return null;
+ }
+
+ return provisioningBundle.getIntArray(capabilityKey);
+ }
+
+ return null;
}
private int getValueFromImsService(int subId, int capability, int tech) {
diff --git a/tests/src/com/android/phone/ImsProvisioningControllerTest.java b/tests/src/com/android/phone/ImsProvisioningControllerTest.java
index 01a6a2c..c26b6a0 100644
--- a/tests/src/com/android/phone/ImsProvisioningControllerTest.java
+++ b/tests/src/com/android/phone/ImsProvisioningControllerTest.java
@@ -28,6 +28,7 @@
import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT;
import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO;
import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE;
+import static android.telephony.ims.feature.RcsFeature.RcsImsCapabilities.CAPABILITY_TYPE_OPTIONS_UCE;
import static android.telephony.ims.feature.RcsFeature.RcsImsCapabilities.CAPABILITY_TYPE_PRESENCE_UCE;
import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM;
import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN;
@@ -69,6 +70,7 @@
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.TestableLooper;
import android.util.Log;
+import android.util.SparseArray;
import com.android.ims.FeatureConnector;
import com.android.ims.ImsConfig;
@@ -176,8 +178,9 @@
int mSubId0 = 1234;
int mSubId1 = 5678;
- String[] mMmTelStringArray;
- String[] mRcsStringArray;
+ SparseArray<int[]> mMmTelTechMap = new SparseArray<>();
+ SparseArray<int[]> mRcsTechMap = new SparseArray<>();
+
int[][] mMmTelProvisioningStorage;
int[][] mRcsProvisioningStorage;
int[][] mImsConfigStorage;
@@ -207,12 +210,12 @@
return mImsConfig;
}
- protected String[] getMmTelStringArrayFromCarrierConfig(int subId) {
- return mMmTelStringArray;
- }
-
- protected String[] getRcsStringArrayFromCarrierConfig(int subId) {
- return mRcsStringArray;
+ protected int[] getTechsFromCarrierConfig(int subId, int capability, boolean isMmtel) {
+ if (isMmtel) {
+ return mMmTelTechMap.get(capability);
+ } else {
+ return mRcsTechMap.get(capability);
+ }
}
protected boolean isValidSubId(int subId) {
@@ -437,11 +440,16 @@
// voice, all tech
// video, all tech
// UT, all tech
- mMmTelStringArray = new String[] {
- "1,0", "1,1", "1,2", "1,3",
- "2,0", "2,1", "2,2", "2,3",
- "4,0", "4,1", "4,2", "4,3"
- };
+ mMmTelTechMap.clear();
+ mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ mMmTelTechMap.put(CAPABILITY_TYPE_UT,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
boolean[][] expectedRequired = new boolean[][] {
{true, true, true, true},
@@ -495,9 +503,10 @@
createImsProvisioningController();
// provisioning required capability : PRESENCE, tech : all
- mRcsStringArray = new String[] {
- "2,0", "2,1", "2,2", "2,3"
- };
+ mRcsTechMap.clear();
+ mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
boolean[] expectedRequired = new boolean[] {true, true, true, true};
@@ -519,11 +528,17 @@
// voice, all tech
// video, all tech
// UT, all tech
- mMmTelStringArray = new String[] {
- "1,0", "1,1", "1,2", "1,3",
- "2,0", "2,1", "2,2", "2,3",
- "4,0", "4,1", "4,2", "4,3"
- };
+ mMmTelTechMap.clear();
+ mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ mMmTelTechMap.put(CAPABILITY_TYPE_UT,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+
// provisioning Status
mMmTelProvisioningStorage = new int[][] {
{CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_LTE, 0},
@@ -607,10 +622,12 @@
// provisioning required capability
// voice, LTE, IWLAN
// video, LTE
- mMmTelStringArray = new String[]{
- "1,0", "1,1",
- "2,0"
- };
+ mMmTelTechMap.clear();
+ mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN});
+ mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
+ new int[] {REGISTRATION_TECH_LTE});
+
// provisioning StatusP, all of provisioning status is not provisioned
mMmTelProvisioningStorage = new int[][]{
{CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_LTE, -1},
@@ -680,9 +697,11 @@
// provisioning required capability
// PRESENCE, all tech
- mRcsStringArray = new String[] {
- "2,0", "2,1", "2,2", "2,3"
- };
+ mRcsTechMap.clear();
+ mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+
// provisioning Status
mRcsProvisioningStorage = new int[][] {
{CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_LTE, 1},
@@ -724,9 +743,10 @@
// provisioning required capability
// PRESENCE, LTE, IWLAN
- mRcsStringArray = new String[]{
- "2,0", "2,1"
- };
+ mRcsTechMap.clear();
+ mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN});
+
// provisioning Status, all of provisioning status is not provisioned
mRcsProvisioningStorage = new int[][]{
{CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_LTE, -1},
@@ -785,9 +805,11 @@
// provisioning required capability
// voice, all tech
- mMmTelStringArray = new String[] {
- "1,0", "1,1", "1,2", "1,3"
- };
+ mMmTelTechMap.clear();
+ mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+
// provisioning Status, all of provisioning status is not provisioned
mMmTelProvisioningStorage = new int[][] {
{CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_LTE, 0},
@@ -864,9 +886,11 @@
// provisioning required capability
// video, all tech
- mMmTelStringArray = new String[] {
- "2,0", "2,1", "2,2", "2,3"
- };
+ mMmTelTechMap.clear();
+ mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+
// provisioning Status, all of provisioning status is not provisioned
mMmTelProvisioningStorage = new int[][] {
{CAPABILITY_TYPE_VIDEO, REGISTRATION_TECH_LTE, 0},
@@ -941,9 +965,11 @@
// provisioning required capability
// PRESENCE, all tech
- mRcsStringArray = new String[] {
- "2,0", "2,1", "2,2", "2,3"
- };
+ mRcsTechMap.clear();
+ mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+
// provisioning Status, all of provisioning status is not provisioned
mRcsProvisioningStorage = new int[][] {
{CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_LTE, 0},
@@ -1034,10 +1060,14 @@
// provisioning required capability
// voice, all tech
// video, all tech
- mMmTelStringArray = new String[] {
- "1,0", "1,1", "1,2", "1,3",
- "2,0", "2,1", "2,2", "2,3"
- };
+ mMmTelTechMap.clear();
+ mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+
// provisioning Status, all of provisioning status is not set
mMmTelProvisioningStorage = new int[][] {
{CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_LTE, -1},
@@ -1114,9 +1144,11 @@
// provisioning required capability
// presence, all tech
- mRcsStringArray = new String[] {
- "2,0", "2,1", "2,2", "2,3"
- };
+ mRcsTechMap.clear();
+ mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+
// provisioning Status, all of provisioning status is not set
mRcsProvisioningStorage = new int[][]{
{CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_LTE, -1},
@@ -1214,10 +1246,12 @@
// provisioning required capability
// voice, LTE, IWLAN
// video, LTE
- mMmTelStringArray = new String[] {
- "1,0", "1,1",
- "2,0"
- };
+ mMmTelTechMap.clear();
+ mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN});
+ mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
+ new int[] {REGISTRATION_TECH_LTE});
+
// provisioning Status, all of provisioning status is not set
mMmTelProvisioningStorage = new int[][] {
{CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_LTE, 1},
@@ -1227,9 +1261,11 @@
// provisioning required capability
// presence, all tech
- mRcsStringArray = new String[] {
- "2,0", "2,1", "2,2", "2,3"
- };
+ mRcsTechMap.clear();
+ mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+
// provisioning Status, all of provisioning status is not set
mRcsProvisioningStorage = new int[][]{
{CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_LTE, 1},
@@ -1310,10 +1346,12 @@
// provisioning required capability
// voice, LTE, IWLAN
// video, LTE
- mMmTelStringArray = new String[] {
- "1,0", "1,1",
- "2,0"
- };
+ mMmTelTechMap.clear();
+ mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN});
+ mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
+ new int[] {REGISTRATION_TECH_LTE});
+
// provisioning Status, all of provisioning status is not set
mMmTelProvisioningStorage = new int[][] {
{CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_LTE, -1},
@@ -1323,9 +1361,11 @@
// provisioning required capability
// presence, all tech
- mRcsStringArray = new String[] {
- "2,0", "2,1", "2,2", "2,3"
- };
+ mRcsTechMap.clear();
+ mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+
// provisioning Status, all of provisioning status is not set
mRcsProvisioningStorage = new int[][]{
{CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_LTE, -1},
@@ -1589,13 +1629,22 @@
}
private void initializeDefaultData() throws Exception {
- mMmTelStringArray = new String[]{
- "1,0", "1,1", "1,2", "1,3",
- "2,0", "2,1", "2,2", "2,3",
- "4,0", "4,1", "4,2", "4,3",
- "8,0", "8,1", "8,2", "8,3",
- "16,0", "16,1", "16,2", "16,3"
- };
+ mMmTelTechMap.clear();
+ mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ mMmTelTechMap.put(CAPABILITY_TYPE_UT,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ mMmTelTechMap.put(CAPABILITY_TYPE_SMS,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ mMmTelTechMap.put(CAPABILITY_TYPE_CALL_COMPOSER,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
mMmTelProvisioningStorage = new int[][]{
{CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_LTE, 1},
{CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_IWLAN, 1},
@@ -1618,10 +1667,14 @@
{CAPABILITY_TYPE_CALL_COMPOSER, REGISTRATION_TECH_CROSS_SIM, 1},
{CAPABILITY_TYPE_CALL_COMPOSER, REGISTRATION_TECH_NR, 1}
};
- mRcsStringArray = new String[]{
- "1,0", "1,1", "1,2", "1,3",
- "2,0", "2,1", "2,2", "2,3"
- };
+
+ mRcsTechMap.clear();
+ mRcsTechMap.put(CAPABILITY_TYPE_OPTIONS_UCE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
+ new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
+ REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
mRcsProvisioningStorage = new int[][]{
{CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_LTE, 1},
{CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_IWLAN, 1},