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

# RegistrationManager

*** ** * ** ***


`
public


interface
RegistrationManager
`


`


`

|---|
| android.telephony.ims.RegistrationManager |

|---|
| Known indirect subclasses [ImsMmTelManager](https://developer.android.com/reference/android/telephony/ims/ImsMmTelManager) |---|---| | [ImsMmTelManager](https://developer.android.com/reference/android/telephony/ims/ImsMmTelManager) | A manager for the MmTel (Multimedia Telephony) feature of an IMS network, given an associated subscription. | |

<br />

*** ** * ** ***

Manages IMS Service registration state for associated `ImsFeature`s.


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/RegistrationManager.RegistrationCallback` Callback class for receiving IMS network Registration callback events. |

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/android/telephony/ims/RegistrationManager#REGISTRATION_STATE_NOT_REGISTERED` The IMS service is currently not registered to the carrier network. |
| `int` | `https://developer.android.com/reference/android/telephony/ims/RegistrationManager#REGISTRATION_STATE_REGISTERED` The IMS service is currently registered to the carrier network. |
| `int` | `https://developer.android.com/reference/android/telephony/ims/RegistrationManager#REGISTRATION_STATE_REGISTERING` The IMS service is currently in the process of registering to the carrier network. |

| ### Public methods ||
|---|---|
| ` abstract void` | ` https://developer.android.com/reference/android/telephony/ims/RegistrationManager#getRegistrationState(java.util.concurrent.Executor,%20java.util.function.Consumer<java.lang.Integer>)(https://developer.android.com/reference/java/util/concurrent/Executor executor, https://developer.android.com/reference/java/util/function/Consumer<https://developer.android.com/reference/java/lang/Integer> stateCallback) ` Gets the registration state of the IMS service. |
| ` abstract void` | ` https://developer.android.com/reference/android/telephony/ims/RegistrationManager#getRegistrationTransportType(java.util.concurrent.Executor,%20java.util.function.Consumer<java.lang.Integer>)(https://developer.android.com/reference/java/util/concurrent/Executor executor, https://developer.android.com/reference/java/util/function/Consumer<https://developer.android.com/reference/java/lang/Integer> transportTypeCallback) ` Gets the Transport Type associated with the current IMS registration. |
| ` abstract void` | ` https://developer.android.com/reference/android/telephony/ims/RegistrationManager#registerImsRegistrationCallback(java.util.concurrent.Executor,%20android.telephony.ims.RegistrationManager.RegistrationCallback)(https://developer.android.com/reference/java/util/concurrent/Executor executor, https://developer.android.com/reference/android/telephony/ims/RegistrationManager.RegistrationCallback c) ` Registers a `https://developer.android.com/reference/android/telephony/ims/RegistrationManager.RegistrationCallback` with the system. |
| ` abstract void` | ` https://developer.android.com/reference/android/telephony/ims/RegistrationManager#unregisterImsRegistrationCallback(android.telephony.ims.RegistrationManager.RegistrationCallback)(https://developer.android.com/reference/android/telephony/ims/RegistrationManager.RegistrationCallback c) ` Removes an existing `https://developer.android.com/reference/android/telephony/ims/RegistrationManager.RegistrationCallback`. |

## Constants

### REGISTRATION_STATE_NOT_REGISTERED

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

```
public static final int REGISTRATION_STATE_NOT_REGISTERED
```

The IMS service is currently not registered to the carrier network.

<br />

Constant Value:

0
(0x00000000)


### REGISTRATION_STATE_REGISTERED

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

```
public static final int REGISTRATION_STATE_REGISTERED
```

The IMS service is currently registered to the carrier network.

<br />

Constant Value:

2
(0x00000002)


### REGISTRATION_STATE_REGISTERING

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

```
public static final int REGISTRATION_STATE_REGISTERING
```

The IMS service is currently in the process of registering to the carrier network.

<br />

Constant Value:

1
(0x00000001)


## Public methods

### getRegistrationState

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

```
public abstract void getRegistrationState (Executor executor, 
                Consumer<Integer> stateCallback)
```

Gets the registration state of the IMS service.


Requires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE

<br />

| Parameters ||
|---|---|
| `executor` | `Executor`: The `https://developer.android.com/reference/java/util/concurrent/Executor` that will be used to call the IMS registration state callback. 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 /> |
| `stateCallback` | `Consumer`: A callback called on the supplied `https://developer.android.com/reference/java/util/concurrent/Executor` that will contain the registration state of the IMS service, which will be one of the following: `https://developer.android.com/reference/android/telephony/ims/RegistrationManager#REGISTRATION_STATE_NOT_REGISTERED`, `https://developer.android.com/reference/android/telephony/ims/RegistrationManager#REGISTRATION_STATE_REGISTERING`, or `https://developer.android.com/reference/android/telephony/ims/RegistrationManager#REGISTRATION_STATE_REGISTERED`. This value cannot be `null`. Value is one of the following: - `https://developer.android.com/reference/android/telephony/ims/RegistrationManager#REGISTRATION_STATE_NOT_REGISTERED` - `https://developer.android.com/reference/android/telephony/ims/RegistrationManager#REGISTRATION_STATE_REGISTERING` - `https://developer.android.com/reference/android/telephony/ims/RegistrationManager#REGISTRATION_STATE_REGISTERED` |

### getRegistrationTransportType

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

```
public abstract void getRegistrationTransportType (Executor executor, 
                Consumer<Integer> transportTypeCallback)
```

Gets the Transport Type associated with the current IMS registration.


Requires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE

<br />

| Parameters ||
|---|---|
| `executor` | `Executor`: The `https://developer.android.com/reference/java/util/concurrent/Executor` that will be used to call the transportTypeCallback. 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 /> |
| `transportTypeCallback` | `Consumer`: The transport type associated with the current IMS registration. This value cannot be `null`. Value is one of the following: - `https://developer.android.com/reference/android/telephony/AccessNetworkConstants#TRANSPORT_TYPE_WWAN` - `https://developer.android.com/reference/android/telephony/AccessNetworkConstants#TRANSPORT_TYPE_WLAN` |

### registerImsRegistrationCallback

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

```
public abstract void registerImsRegistrationCallback (Executor executor, 
                RegistrationManager.RegistrationCallback c)
```

Registers a `https://developer.android.com/reference/android/telephony/ims/RegistrationManager.RegistrationCallback` with the system. Use.


Requires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE

<br />

| Parameters ||
|---|---|
| `executor` | `Executor`: The `https://developer.android.com/reference/java/util/concurrent/Executor` that will be used to call the IMS registration state callback. 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 /> |
| `c` | `RegistrationManager.RegistrationCallback`: A callback called on the supplied `https://developer.android.com/reference/java/util/concurrent/Executor` that will contain the registration state of the IMS service, which will be one of the `https://developer.android.com/` to listen to Subscription changed events and call `https://developer.android.com/reference/android/telephony/ims/RegistrationManager#unregisterImsRegistrationCallback(android.telephony.ims.RegistrationManager.RegistrationCallback)` to clean up. When the callback is registered, it will initiate the callback c to be called with the current registration state. 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 `ImsService` associated with the subscription is not available. This can happen if the service crashed, for example. See `https://developer.android.com/reference/android/telephony/ims/ImsException#getCode()` for a more detailed reason. |

**See also:**

- `https://developer.android.com/reference/android/telephony/ims/RegistrationManager#unregisterImsRegistrationCallback(android.telephony.ims.RegistrationManager.RegistrationCallback)`

### unregisterImsRegistrationCallback

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

```
public abstract void unregisterImsRegistrationCallback (RegistrationManager.RegistrationCallback c)
```

Removes an existing `https://developer.android.com/reference/android/telephony/ims/RegistrationManager.RegistrationCallback`.

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.


Requires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE

<br />

| Parameters ||
|---|---|
| `c` | `RegistrationManager.RegistrationCallback`: The `https://developer.android.com/reference/android/telephony/ims/RegistrationManager.RegistrationCallback` to be removed. This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/telephony/SubscriptionManager.OnSubscriptionsChangedListener`
- `https://developer.android.com/reference/android/telephony/ims/RegistrationManager#registerImsRegistrationCallback(java.util.concurrent.Executor,%20android.telephony.ims.RegistrationManager.RegistrationCallback)`