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

Commit ff46fea5 authored by Hakjun Choi's avatar Hakjun Choi Committed by Gerrit Code Review
Browse files

Merge changes from topics "imsservice subid notifications", "provisioning...

Merge changes from topics "imsservice subid notifications", "provisioning improvement", "provisioning_improvement_2"

* changes:
  Fix CTS failure caused by ag/16284012
  Add Provisioning bundle for indicating if MMTEL/RCS provisioning is required
  Add public API to ProvisioningManager for IMS/RCS provisioning by updatable provisioning app
  ImsService Subscription Notifications
parents f0524f16 433468ed
Loading
Loading
Loading
Loading
+51 −3
Original line number Diff line number Diff line
@@ -39771,11 +39771,11 @@ package android.telephony {
    field public static final String KEY_CARRIER_SUPPORTS_TETHERING_BOOL = "carrier_supports_tethering_bool";
    field public static final String KEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY_BOOL = "carrier_use_ims_first_for_emergency_bool";
    field public static final String KEY_CARRIER_USSD_METHOD_INT = "carrier_ussd_method_int";
    field public static final String KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL = "carrier_ut_provisioning_required_bool";
    field @Deprecated public static final String KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL = "carrier_ut_provisioning_required_bool";
    field public static final String KEY_CARRIER_VOLTE_AVAILABLE_BOOL = "carrier_volte_available_bool";
    field public static final String KEY_CARRIER_VOLTE_OVERRIDE_WFC_PROVISIONING_BOOL = "carrier_volte_override_wfc_provisioning_bool";
    field public static final String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
    field public static final String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool";
    field @Deprecated public static final String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
    field @Deprecated public static final String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool";
    field public static final String KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL = "carrier_volte_tty_supported_bool";
    field public static final String KEY_CARRIER_VT_AVAILABLE_BOOL = "carrier_vt_available_bool";
    field @Deprecated public static final String KEY_CARRIER_VVM_PACKAGE_NAME_STRING = "carrier_vvm_package_name_string";
@@ -40004,14 +40004,23 @@ package android.telephony {
  }
  public static final class CarrierConfigManager.Ims {
    field public static final String KEY_CAPABILITY_CALL_COMPOSER_INT_ARRAY = "ims.key_capability_type_call_composer_int_array";
    field public static final String KEY_CAPABILITY_TYPE_OPTIONS_UCE_INT_ARRAY = "ims.key_capability_type_options_uce_int_array";
    field public static final String KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY = "ims.key_capability_type_presence_uce_int_array";
    field public static final String KEY_CAPABILITY_TYPE_SMS_INT_ARRAY = "ims.key_capability_type_sms_int_array";
    field public static final String KEY_CAPABILITY_TYPE_UT_INT_ARRAY = "ims.key_capability_type_ut_int_array";
    field public static final String KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY = "ims.key_capability_type_video_int_array";
    field public static final String KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY = "ims.key_capability_type_voice_int_array";
    field public static final String KEY_ENABLE_PRESENCE_CAPABILITY_EXCHANGE_BOOL = "ims.enable_presence_capability_exchange_bool";
    field public static final String KEY_ENABLE_PRESENCE_GROUP_SUBSCRIBE_BOOL = "ims.enable_presence_group_subscribe_bool";
    field public static final String KEY_ENABLE_PRESENCE_PUBLISH_BOOL = "ims.enable_presence_publish_bool";
    field public static final String KEY_IMS_SINGLE_REGISTRATION_REQUIRED_BOOL = "ims.ims_single_registration_required_bool";
    field public static final String KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE = "ims.mmtel_requires_provisioning_bundle";
    field public static final String KEY_NON_RCS_CAPABILITIES_CACHE_EXPIRATION_SEC_INT = "ims.non_rcs_capabilities_cache_expiration_sec_int";
    field public static final String KEY_PREFIX = "ims.";
    field public static final String KEY_RCS_BULK_CAPABILITY_EXCHANGE_BOOL = "ims.rcs_bulk_capability_exchange_bool";
    field public static final String KEY_RCS_FEATURE_TAG_ALLOWED_STRING_ARRAY = "ims.rcs_feature_tag_allowed_string_array";
    field public static final String KEY_RCS_REQUIRES_PROVISIONING_BUNDLE = "ims.rcs_requires_provisioning_bundle";
    field public static final String KEY_WIFI_OFF_DEFERRING_TIME_MILLIS_INT = "ims.wifi_off_deferring_time_millis_int";
  }
@@ -42451,6 +42460,7 @@ package android.telephony.ims {
  public class ImsManager {
    method @NonNull public android.telephony.ims.ImsMmTelManager getImsMmTelManager(int);
    method @NonNull public android.telephony.ims.ImsRcsManager getImsRcsManager(int);
    method @NonNull public android.telephony.ims.ProvisioningManager getProvisioningManager(int);
    field public static final String ACTION_WFC_IMS_REGISTRATION_ERROR = "android.telephony.ims.action.WFC_IMS_REGISTRATION_ERROR";
    field public static final String EXTRA_WFC_REGISTRATION_FAILURE_MESSAGE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_MESSAGE";
    field public static final String EXTRA_WFC_REGISTRATION_FAILURE_TITLE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_TITLE";
@@ -42701,6 +42711,23 @@ package android.telephony.ims {
    field public static final int REASON_UNKNOWN_TEMPORARY_ERROR = 1; // 0x1
  }
  public class ProvisioningManager {
    method @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) @WorkerThread public boolean getProvisioningStatusForCapability(int, int);
    method @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) @WorkerThread public boolean getRcsProvisioningStatusForCapability(int, int);
    method @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public boolean isProvisioningRequiredForCapability(int, int);
    method @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public boolean isRcsProvisioningRequiredForCapability(int, int);
    method @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public void registerFeatureProvisioningChangedCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ProvisioningManager.FeatureProvisioningCallback) throws android.telephony.ims.ImsException;
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setProvisioningStatusForCapability(int, int, boolean);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setRcsProvisioningStatusForCapability(int, int, boolean);
    method public void unregisterFeatureProvisioningChangedCallback(@NonNull android.telephony.ims.ProvisioningManager.FeatureProvisioningCallback);
  }
  public static class ProvisioningManager.FeatureProvisioningCallback {
    ctor public ProvisioningManager.FeatureProvisioningCallback();
    method public void onFeatureProvisioningChanged(int, int, boolean);
    method public void onRcsFeatureProvisioningChanged(int, int, boolean);
  }
  public class RcsUceAdapter {
    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isUceSettingEnabled() throws android.telephony.ims.ImsException;
  }
@@ -42741,6 +42768,27 @@ package android.telephony.ims.feature {
    field public static final int CAPABILITY_TYPE_VOICE = 1; // 0x1
  }
  public class RcsFeature {
  }
  public static class RcsFeature.RcsImsCapabilities {
    field public static final int CAPABILITY_TYPE_NONE = 0; // 0x0
    field public static final int CAPABILITY_TYPE_OPTIONS_UCE = 1; // 0x1
    field public static final int CAPABILITY_TYPE_PRESENCE_UCE = 2; // 0x2
  }
}
package android.telephony.ims.stub {
  public class ImsRegistrationImplBase {
    field public static final int REGISTRATION_TECH_CROSS_SIM = 2; // 0x2
    field public static final int REGISTRATION_TECH_IWLAN = 1; // 0x1
    field public static final int REGISTRATION_TECH_LTE = 0; // 0x0
    field public static final int REGISTRATION_TECH_NONE = -1; // 0xffffffff
    field public static final int REGISTRATION_TECH_NR = 3; // 0x3
  }
}
package android.telephony.mbms {
+15 −18
Original line number Diff line number Diff line
@@ -12896,14 +12896,21 @@ package android.telephony.ims {
  public class ImsService extends android.app.Service {
    ctor public ImsService();
    method public android.telephony.ims.feature.MmTelFeature createMmTelFeature(int);
    method public android.telephony.ims.feature.RcsFeature createRcsFeature(int);
    method public void disableIms(int);
    method public void enableIms(int);
    method public android.telephony.ims.stub.ImsConfigImplBase getConfig(int);
    method @Nullable public android.telephony.ims.feature.MmTelFeature createEmergencyOnlyMmTelFeature(int);
    method @Deprecated public android.telephony.ims.feature.MmTelFeature createMmTelFeature(int);
    method @Nullable public android.telephony.ims.feature.MmTelFeature createMmTelFeatureForSubscription(int, int);
    method @Deprecated public android.telephony.ims.feature.RcsFeature createRcsFeature(int);
    method @Nullable public android.telephony.ims.feature.RcsFeature createRcsFeatureForSubscription(int, int);
    method @Deprecated public void disableIms(int);
    method public void disableImsForSubscription(int, int);
    method @Deprecated public void enableIms(int);
    method public void enableImsForSubscription(int, int);
    method @Deprecated public android.telephony.ims.stub.ImsConfigImplBase getConfig(int);
    method @NonNull public android.telephony.ims.stub.ImsConfigImplBase getConfigForSubscription(int, int);
    method @NonNull public java.util.concurrent.Executor getExecutor();
    method public long getImsServiceCapabilities();
    method public android.telephony.ims.stub.ImsRegistrationImplBase getRegistration(int);
    method @Deprecated public android.telephony.ims.stub.ImsRegistrationImplBase getRegistration(int);
    method @NonNull public android.telephony.ims.stub.ImsRegistrationImplBase getRegistrationForSubscription(int, int);
    method @Nullable public android.telephony.ims.stub.SipTransportImplBase getSipTransport(int);
    method public final void onUpdateSupportedImsFeatures(android.telephony.ims.stub.ImsFeatureConfiguration) throws android.os.RemoteException;
    method public android.telephony.ims.stub.ImsFeatureConfiguration querySupportedImsFeatures();
@@ -13127,18 +13134,16 @@ package android.telephony.ims {
  public class ProvisioningManager {
    method @NonNull public static android.telephony.ims.ProvisioningManager createForSubscriptionId(int);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public int getProvisioningIntValue(int);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean getProvisioningStatusForCapability(int, int);
    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public String getProvisioningStringValue(int);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean getRcsProvisioningStatusForCapability(int);
    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean getRcsProvisioningStatusForCapability(int);
    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.PERFORM_IMS_SINGLE_REGISTRATION}) public boolean isRcsVolteSingleRegistrationCapable() throws android.telephony.ims.ImsException;
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyRcsAutoConfigurationReceived(@NonNull byte[], boolean);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerProvisioningChangedCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ProvisioningManager.Callback) throws android.telephony.ims.ImsException;
    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.PERFORM_IMS_SINGLE_REGISTRATION}) public void registerRcsProvisioningCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ProvisioningManager.RcsProvisioningCallback) throws android.telephony.ims.ImsException;
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public int setProvisioningIntValue(int, int);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setProvisioningStatusForCapability(int, int, boolean);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public int setProvisioningStringValue(int, @NonNull String);
    method @RequiresPermission(android.Manifest.permission.PERFORM_IMS_SINGLE_REGISTRATION) public void setRcsClientConfiguration(@NonNull android.telephony.ims.RcsClientConfiguration) throws android.telephony.ims.ImsException;
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setRcsProvisioningStatusForCapability(int, boolean);
    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setRcsProvisioningStatusForCapability(int, boolean);
    method @RequiresPermission(android.Manifest.permission.PERFORM_IMS_SINGLE_REGISTRATION) public void triggerRcsReconfiguration();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterProvisioningChangedCallback(@NonNull android.telephony.ims.ProvisioningManager.Callback);
    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.PERFORM_IMS_SINGLE_REGISTRATION}) public void unregisterRcsProvisioningCallback(@NonNull android.telephony.ims.ProvisioningManager.RcsProvisioningCallback);
@@ -13573,9 +13578,6 @@ package android.telephony.ims.feature {
    method public void addCapabilities(int);
    method public boolean isCapable(int);
    method public void removeCapabilities(int);
    field public static final int CAPABILITY_TYPE_NONE = 0; // 0x0
    field public static final int CAPABILITY_TYPE_OPTIONS_UCE = 1; // 0x1
    field public static final int CAPABILITY_TYPE_PRESENCE_UCE = 2; // 0x2
  }
}
@@ -13725,11 +13727,6 @@ package android.telephony.ims.stub {
    method public void triggerFullNetworkRegistration(@IntRange(from=100, to=699) int, @Nullable String);
    method public void triggerSipDelegateDeregistration();
    method public void updateSipDelegateRegistration();
    field public static final int REGISTRATION_TECH_CROSS_SIM = 2; // 0x2
    field public static final int REGISTRATION_TECH_IWLAN = 1; // 0x1
    field public static final int REGISTRATION_TECH_LTE = 0; // 0x0
    field public static final int REGISTRATION_TECH_NONE = -1; // 0xffffffff
    field public static final int REGISTRATION_TECH_NR = 3; // 0x3
  }
  public class ImsSmsImplBase {
+115 −0
Original line number Diff line number Diff line
@@ -168,7 +168,10 @@ public class CarrierConfigManager {
    /**
     * This flag specifies whether VoLTE availability is based on provisioning. By default this is
     * false.
     * Used for UCE to determine if EAB provisioning checks should be based on provisioning.
     * @deprecated Use {@link Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE} instead.
     */
    @Deprecated
    public static final String
            KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";

@@ -864,7 +867,12 @@ public class CarrierConfigManager {
    /**
     * Flag specifying whether provisioning is required for VoLTE, Video Telephony, and WiFi
     * Calling.

     * Combines VoLTE, VT, VoWiFI calling provisioning into one parameter.
     * @deprecated Use {@link Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE} instead for
     * finer-grained control.
     */
    @Deprecated
    public static final String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL
            = "carrier_volte_provisioning_required_bool";

@@ -878,7 +886,11 @@ public class CarrierConfigManager {
     * and enable the UT over IMS capability for the subscription when the subscription is loaded.
     *
     * The default value for this key is {@code false}.
     *
     * @deprecated Use {@link Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE} instead for
     * determining if UT requires provisioning.
     */
    @Deprecated
    public static final String KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL =
            "carrier_ut_provisioning_required_bool";

@@ -4637,6 +4649,95 @@ public class CarrierConfigManager {
        public static final String KEY_RCS_REQUEST_RETRY_INTERVAL_MILLIS_LONG =
                KEY_PREFIX + "rcs_request_retry_interval_millis_long";

        /**
         * A bundle which specifies the MMTEL capability and registration technology
         * that requires provisioning. If a tuple is not present, the
         * framework will not require that the tuple requires provisioning before
         * enabling the capability.
         * <p> Possible keys in this bundle are
         * <ul>
         *     <li>{@link #KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY}</li>
         *     <li>{@link #KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY}</li>
         *     <li>{@link #KEY_CAPABILITY_TYPE_UT_INT_ARRAY}</li>
         *     <li>{@link #KEY_CAPABILITY_TYPE_SMS_INT_ARRAY}</li>
         *     <li>{@link #KEY_CAPABILITY_CALL_COMPOSER_INT_ARRAY}</li>
         * </ul>
         * <p> The values are defined in
         * {@link android.telephony.ims.stub.ImsRegistrationImplBase.ImsRegistrationTech}
         */
        public static final String KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE =
                KEY_PREFIX + "mmtel_requires_provisioning_bundle";

        /**
         * This MmTelFeature supports Voice calling (IR.92)
         * @see MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VOICE
         */
        public static final String KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_voice_int_array";

        /**
         * This MmTelFeature supports Video (IR.94)
         * @see MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VIDEO
         */
        public static final String KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_video_int_array";

        /**
         * This MmTelFeature supports XCAP over Ut for supplementary services. (IR.92)
         * @see MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_UT
         */
        public static final String KEY_CAPABILITY_TYPE_UT_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_ut_int_array";

        /**
         * This MmTelFeature supports SMS (IR.92)
         * @see MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_SMS
         */
        public static final String KEY_CAPABILITY_TYPE_SMS_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_sms_int_array";

        /**
         * This MmTelFeature supports Call Composer (section 2.4 of RCC.20)
         * @see MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_CALL_COMPOSER
         */
        public static final String KEY_CAPABILITY_CALL_COMPOSER_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_call_composer_int_array";

        /**
         * A bundle which specifies the RCS capability and registration technology
         * that requires provisioning. If a tuple is not present, the
         * framework will not require that the tuple requires provisioning before
         * enabling the capability.
         * <p> Possible keys in this bundle are
         * <ul>
         *     <li>{@link #KEY_CAPABILITY_TYPE_OPTIONS_UCE_INT_ARRAY}</li>
         *     <li>{@link #KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY}</li>
         * </ul>
         * <p> The values are defined in
         * {@link android.telephony.ims.stub.ImsRegistrationImplBase.ImsRegistrationTech}
         */
        public static final String KEY_RCS_REQUIRES_PROVISIONING_BUNDLE =
                KEY_PREFIX + "rcs_requires_provisioning_bundle";

        /**
         * This carrier supports User Capability Exchange using SIP OPTIONS as defined by the
         * framework. If set, the RcsFeature should support capability exchange using SIP OPTIONS.
         * If not set, this RcsFeature should not service capability requests.
         * @see RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_OPTIONS_UCE
         */
        public static final String KEY_CAPABILITY_TYPE_OPTIONS_UCE_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_options_uce_int_array";

        /**
         * This carrier supports User Capability Exchange using a presence server as defined by the
         * framework. If set, the RcsFeature should support capability exchange using a presence
         * server. If not set, this RcsFeature should not publish capabilities or service capability
         * requests using presence.
         * @see RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_PRESENCE_UCE
         */
        public static final String KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_presence_uce_int_array";

        private Ims() {}

        private static PersistableBundle getDefaults() {
@@ -4673,6 +4774,20 @@ public class CarrierConfigManager {
                    "+g.gsma.rcs.botversion=\"#=1,#=2\"",
                    "+g.gsma.rcs.cpimext"});

            /**
             * @see #KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE
             */
            PersistableBundle mmtel_requires_provisioning_int_array = new PersistableBundle();
            defaults.putPersistableBundle(
                    KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE, mmtel_requires_provisioning_int_array);

            /**
             * @see #KEY_RCS_REQUIRES_PROVISIONING_BUNDLE
             */
            PersistableBundle rcs_requires_provisioning_int_array = new PersistableBundle();
            defaults.putPersistableBundle(
                    KEY_RCS_REQUIRES_PROVISIONING_BUNDLE, rcs_requires_provisioning_int_array);

            return defaults;
        }
    }
+20 −0
Original line number Diff line number Diff line
@@ -160,6 +160,26 @@ public class ImsManager {
        return new SipDelegateManager(mContext, subscriptionId, sRcsCache, sTelephonyCache);
    }


    /**
     * Create an instance of {@link ProvisioningManager} for the subscription id specified.
     * <p>
     * Provides a ProvisioningManager instance to carrier apps to update carrier provisioning
     * information, as well as provides a callback so that apps can listen for changes
     * in MMTEL/RCS provisioning
     * @param subscriptionId The ID of the subscription that this ProvisioningManager will use.
     * @throws IllegalArgumentException if the subscription is invalid.
     * @return a ProvisioningManager instance with the specific subscription ID.
     */
    @NonNull
    public ProvisioningManager getProvisioningManager(int subscriptionId) {
        if (!SubscriptionManager.isValidSubscriptionId(subscriptionId)) {
            throw new IllegalArgumentException("Invalid subscription ID: " + subscriptionId);
        }

        return new ProvisioningManager(subscriptionId);
    }

    private static IImsRcsController getIImsRcsControllerInterface() {
        return IImsRcsController.Stub.asInterface(
                TelephonyFrameworkInitializer
+208 −26

File changed.

Preview size limit exceeded, changes collapsed.

Loading