Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Nested Classes](https://developer.android.com/reference/android/telephony/ims/ProvisioningManager#nestedclasses) \| [Methods](https://developer.android.com/reference/android/telephony/ims/ProvisioningManager#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/telephony/ims/ProvisioningManager#inhmethods)

# ProvisioningManager

*** ** * ** ***

` public class ProvisioningManager `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.telephony.ims.ProvisioningManager |

<br />

*** ** * ** ***

Manages IMS provisioning and configuration parameters, as well as callbacks for apps to listen to changes in these configurations. IMS provisioning keys are defined per carrier or OEM using OMA-DM or other provisioning applications and may vary. It is up to the carrier and OEM applications to ensure that the correct provisioning keys are being used when integrating with a vendor's ImsService. Use `https://developer.android.com/reference/android/telephony/ims/ImsManager#getProvisioningManager(int)` to get an instance of this manager.   

Requires the `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_IMS` feature which can be detected using `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`.

## Summary

| ### Nested classes ||
|---|---|
| ` class` | `https://developer.android.com/reference/android/telephony/ims/ProvisioningManager.FeatureProvisioningCallback` Callback for IMS provisioning feature changes. |

| ### Public methods ||
|---|---|
| ` boolean` | ` https://developer.android.com/reference/android/telephony/ims/ProvisioningManager#getProvisioningStatusForCapability(int,%20int)(int capability, int tech) ` Get the provisioning status for the IMS MmTel capability specified. |
| ` boolean` | ` https://developer.android.com/reference/android/telephony/ims/ProvisioningManager#getRcsProvisioningStatusForCapability(int,%20int)(int capability, int tech) ` Get the provisioning status for the IMS RCS capability specified. |
| ` boolean` | ` https://developer.android.com/reference/android/telephony/ims/ProvisioningManager#isProvisioningRequiredForCapability(int,%20int)(int capability, int tech) ` Indicates whether provisioning for the MMTEL capability and IMS registration technology specified is required or not Requires Permission: - android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE, - `https://developer.android.com/reference/android/Manifest.permission#READ_PRECISE_PHONE_STATE`, - or that the caller has carrier privileges (see `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`). <br /> |
| ` boolean` | ` https://developer.android.com/reference/android/telephony/ims/ProvisioningManager#isRcsProvisioningRequiredForCapability(int,%20int)(int capability, int tech) ` Indicates whether provisioning for the RCS capability and IMS registration technology specified is required or not Requires Permission: - android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE, - `https://developer.android.com/reference/android/Manifest.permission#READ_PRECISE_PHONE_STATE`, - or that the caller has carrier privileges (see `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`). <br /> |
| ` void` | ` https://developer.android.com/reference/android/telephony/ims/ProvisioningManager#registerFeatureProvisioningChangedCallback(java.util.concurrent.Executor,%20android.telephony.ims.ProvisioningManager.FeatureProvisioningCallback)(https://developer.android.com/reference/java/util/concurrent/Executor executor, https://developer.android.com/reference/android/telephony/ims/ProvisioningManager.FeatureProvisioningCallback callback) ` Register a new `https://developer.android.com/reference/android/telephony/ims/ProvisioningManager.FeatureProvisioningCallback`, which is used to listen for IMS feature provisioning updates. |
| ` void` | ` https://developer.android.com/reference/android/telephony/ims/ProvisioningManager#setProvisioningStatusForCapability(int,%20int,%20boolean)(int capability, int tech, boolean isProvisioned) ` Set the provisioning status for the IMS MmTel capability using the specified subscription. |
| ` void` | ` https://developer.android.com/reference/android/telephony/ims/ProvisioningManager#setRcsProvisioningStatusForCapability(int,%20int,%20boolean)(int capability, int tech, boolean isProvisioned) ` Set the provisioning status for the IMS RCS capability using the specified subscription. |
| ` void` | ` https://developer.android.com/reference/android/telephony/ims/ProvisioningManager#unregisterFeatureProvisioningChangedCallback(android.telephony.ims.ProvisioningManager.FeatureProvisioningCallback)(https://developer.android.com/reference/android/telephony/ims/ProvisioningManager.FeatureProvisioningCallback callback) ` Unregisters a previously registered `https://developer.android.com/reference/android/telephony/ims/ProvisioningManager.FeatureProvisioningCallback` instance. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.

## Public methods

### getProvisioningStatusForCapability

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean getProvisioningStatusForCapability (int capability, 
                int tech)
```

Get the provisioning status for the IMS MmTel capability specified. If provisioning is not required for the queried `capability` and `tech` combination specified, this method will always return `true`.

Requires Permission:

- android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE,
- `https://developer.android.com/reference/android/Manifest.permission#READ_PRECISE_PHONE_STATE`,
- or that the caller has carrier privileges (see `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`).

.   
This method may take several seconds to complete, so it should only be called from a worker thread.   
Requires `https://developer.android.com/reference/android/Manifest.permission#READ_PRECISE_PHONE_STATE`

<br />

<br />

| Parameters ||
|---|---|
| `capability` | `int`: Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VOICE` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VIDEO` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_UT` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_SMS` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_CALL_COMPOSER` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_CALL_COMPOSER_BUSINESS_ONLY` |
| `tech` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_NONE` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_LTE` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_IWLAN` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_CROSS_SIM` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_NR` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_3G` |

| Returns ||
|---|---|
| `boolean` | true if the device is provisioned for the capability or does not require provisioning, false if the capability does require provisioning and has not been provisioned yet. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | If the device does not have `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_IMS`. |

**See also:**

- `https://developer.android.com/reference/android/telephony/CarrierConfigManager.Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE`

### getRcsProvisioningStatusForCapability

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean getRcsProvisioningStatusForCapability (int capability, 
                int tech)
```

Get the provisioning status for the IMS RCS capability specified. If provisioning is not required for the queried `capability` or if the device does not support IMS this method will always return `true`.

Requires Permission:

- `https://developer.android.com/reference/android/Manifest.permission#READ_PRECISE_PHONE_STATE`,
- or that the caller has carrier privileges (see `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`).

.   
This method may take several seconds to complete, so it should only be called from a worker thread.   
Requires `https://developer.android.com/reference/android/Manifest.permission#READ_PRECISE_PHONE_STATE`

<br />

<br />

| Parameters ||
|---|---|
| `capability` | `int`: Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/telephony/ims/ImsRcsManager#CAPABILITY_TYPE_NONE` - `https://developer.android.com/reference/android/telephony/ims/ImsRcsManager#CAPABILITY_TYPE_OPTIONS_UCE` - `https://developer.android.com/reference/android/telephony/ims/ImsRcsManager#CAPABILITY_TYPE_PRESENCE_UCE` |
| `tech` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_NONE` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_LTE` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_IWLAN` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_CROSS_SIM` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_NR` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_3G` |

| Returns ||
|---|---|
| `boolean` | true if the device is provisioned for the capability or does not require provisioning, false if the capability does require provisioning and has not been provisioned yet. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | If the device does not have `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_IMS`. |

**See also:**

- `https://developer.android.com/reference/android/telephony/CarrierConfigManager.Ims#KEY_RCS_REQUIRES_PROVISIONING_BUNDLE`

### isProvisioningRequiredForCapability

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean isProvisioningRequiredForCapability (int capability, 
                int tech)
```

Indicates whether provisioning for the MMTEL capability and IMS registration technology specified is required or not

Requires Permission:

- android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE,
- `https://developer.android.com/reference/android/Manifest.permission#READ_PRECISE_PHONE_STATE`,
- or that the caller has carrier privileges (see `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`).

.   
Requires `https://developer.android.com/reference/android/Manifest.permission#READ_PRECISE_PHONE_STATE`

<br />

<br />

| Parameters ||
|---|---|
| `capability` | `int`: Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VOICE` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VIDEO` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_UT` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_SMS` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_CALL_COMPOSER` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_CALL_COMPOSER_BUSINESS_ONLY` |
| `tech` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_NONE` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_LTE` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_IWLAN` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_CROSS_SIM` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_NR` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_3G` |

| Returns ||
|---|---|
| `boolean` | true if provisioning is required for the MMTEL capability and IMS registration technology specified, false if it is not required or if the device does not support IMS. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | If the device does not have `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_IMS`. |

### isRcsProvisioningRequiredForCapability

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean isRcsProvisioningRequiredForCapability (int capability, 
                int tech)
```

Indicates whether provisioning for the RCS capability and IMS registration technology specified is required or not

Requires Permission:

- android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE,
- `https://developer.android.com/reference/android/Manifest.permission#READ_PRECISE_PHONE_STATE`,
- or that the caller has carrier privileges (see `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`).

.   
Requires `https://developer.android.com/reference/android/Manifest.permission#READ_PRECISE_PHONE_STATE`

<br />

<br />

| Parameters ||
|---|---|
| `capability` | `int`: Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/telephony/ims/ImsRcsManager#CAPABILITY_TYPE_NONE` - `https://developer.android.com/reference/android/telephony/ims/ImsRcsManager#CAPABILITY_TYPE_OPTIONS_UCE` - `https://developer.android.com/reference/android/telephony/ims/ImsRcsManager#CAPABILITY_TYPE_PRESENCE_UCE` |
| `tech` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_NONE` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_LTE` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_IWLAN` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_CROSS_SIM` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_NR` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_3G` |

| Returns ||
|---|---|
| `boolean` | true if provisioning is required for the RCS capability and IMS registration technology specified, false if it is not required or if the device does not support IMS. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | If the device does not have `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_IMS`. |

### registerFeatureProvisioningChangedCallback

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void registerFeatureProvisioningChangedCallback (Executor executor, 
                ProvisioningManager.FeatureProvisioningCallback callback)
```

Register a new `https://developer.android.com/reference/android/telephony/ims/ProvisioningManager.FeatureProvisioningCallback`, which is used to listen for IMS feature provisioning updates.

When the subscription associated with this callback is removed (SIM removed, ESIM swap,etc...), this callback will automatically be removed.

Requires Permission:

- android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE,
- `https://developer.android.com/reference/android/Manifest.permission#READ_PRECISE_PHONE_STATE`,
- or that the caller has carrier privileges (see `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`).

.   
Requires `https://developer.android.com/reference/android/Manifest.permission#READ_PRECISE_PHONE_STATE`

<br />

<br />

| Parameters ||
|---|---|
| `executor` | `Executor`: The executor that the callback methods will be called on. This value cannot be `null`. Callback and listener events are dispatched through this `https://developer.android.com/reference/java/util/concurrent/Executor`, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use `https://developer.android.com/reference/android/content/Context#getMainExecutor()`. Otherwise, provide an `https://developer.android.com/reference/java/util/concurrent/Executor` that dispatches to an appropriate thread. <br /> |
| `callback` | `ProvisioningManager.FeatureProvisioningCallback`: The callback instance being registered. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/android/telephony/ims/ImsException` | if the subscription associated with this callback is valid, but the service crashed, for example. See `https://developer.android.com/reference/android/telephony/ims/ImsException#getCode()` for a more detailed reason. |
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | If the device does not have `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_IMS`. |

### setProvisioningStatusForCapability

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setProvisioningStatusForCapability (int capability, 
                int tech, 
                boolean isProvisioned)
```

Set the provisioning status for the IMS MmTel capability using the specified subscription. Provisioning may or may not be required, depending on the carrier configuration. If provisioning is not required for the carrier associated with this subscription or the device does not support the capability/technology combination specified, this operation will be a no-op.

Requires Permission:

- `https://developer.android.com/reference/android/Manifest.permission#MODIFY_PHONE_STATE`,
- or that the calling app has carrier privileges (see
- `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`).

.   
This method may take several seconds to complete, so it should only be called from a worker thread.   
Requires `https://developer.android.com/reference/android/Manifest.permission#MODIFY_PHONE_STATE`

<br />

<br />

| Parameters ||
|---|---|
| `capability` | `int`: Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VOICE` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VIDEO` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_UT` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_SMS` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_CALL_COMPOSER` - `https://developer.android.com/reference/android/telephony/ims/feature/MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_CALL_COMPOSER_BUSINESS_ONLY` |
| `tech` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_NONE` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_LTE` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_IWLAN` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_CROSS_SIM` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_NR` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_3G` |
| `isProvisioned` | `boolean`: true if the device is provisioned for UT over IMS, false otherwise. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | If the device does not have `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_IMS`. |

**See also:**

- `https://developer.android.com/reference/android/telephony/CarrierConfigManager.Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE`

### setRcsProvisioningStatusForCapability

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setRcsProvisioningStatusForCapability (int capability, 
                int tech, 
                boolean isProvisioned)
```

Set the provisioning status for the IMS RCS capability using the specified subscription. Provisioning may or may not be required, depending on the carrier configuration. If provisioning is not required for the carrier associated with this subscription or the device does not support the capability/technology combination specified, this operation will be a no-op.

Requires Permission:

- `https://developer.android.com/reference/android/Manifest.permission#MODIFY_PHONE_STATE`,
- or that the caller has carrier privileges (see `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`).

.   
This method may take several seconds to complete, so it should only be called from a worker thread.   
Requires `https://developer.android.com/reference/android/Manifest.permission#MODIFY_PHONE_STATE`

<br />

<br />

| Parameters ||
|---|---|
| `capability` | `int`: Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/telephony/ims/ImsRcsManager#CAPABILITY_TYPE_NONE` - `https://developer.android.com/reference/android/telephony/ims/ImsRcsManager#CAPABILITY_TYPE_OPTIONS_UCE` - `https://developer.android.com/reference/android/telephony/ims/ImsRcsManager#CAPABILITY_TYPE_PRESENCE_UCE` |
| `tech` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_NONE` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_LTE` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_IWLAN` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_CROSS_SIM` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_NR` - `https://developer.android.com/reference/android/telephony/ims/stub/ImsRegistrationImplBase#REGISTRATION_TECH_3G` |
| `isProvisioned` | `boolean`: true if the device is provisioned for the RCS capability specified, false otherwise. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | If the device does not have `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_IMS`. |

**See also:**

- `https://developer.android.com/reference/android/telephony/CarrierConfigManager.Ims#KEY_RCS_REQUIRES_PROVISIONING_BUNDLE`

### unregisterFeatureProvisioningChangedCallback

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void unregisterFeatureProvisioningChangedCallback (ProvisioningManager.FeatureProvisioningCallback callback)
```

Unregisters a previously registered `https://developer.android.com/reference/android/telephony/ims/ProvisioningManager.FeatureProvisioningCallback` instance. When the subscription associated with this callback is removed (SIM removed, ESIM swap, etc...), this callback will automatically be removed. If this method is called for an inactive subscription, it will result in a no-op.

<br />

| Parameters ||
|---|---|
| `callback` | `ProvisioningManager.FeatureProvisioningCallback`: The existing `https://developer.android.com/reference/android/telephony/ims/ProvisioningManager.FeatureProvisioningCallback` to be removed. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | If the device does not have `https://developer.android.com/reference/android/content/pm/PackageManager#FEATURE_TELEPHONY_IMS`. |

**See also:**

- `https://developer.android.com/reference/android/telephony/ims/ProvisioningManager#registerFeatureProvisioningChangedCallback(java.util.concurrent.Executor,%20android.telephony.ims.ProvisioningManager.FeatureProvisioningCallback)`