Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Constants](https://developer.android.com/reference/android/media/RingtoneManager#constants) \| [Ctors](https://developer.android.com/reference/android/media/RingtoneManager#pubctors) \| [Methods](https://developer.android.com/reference/android/media/RingtoneManager#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/media/RingtoneManager#inhmethods)

# RingtoneManager

*** ** * ** ***


`
public


class
RingtoneManager
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.media.RingtoneManager |

<br />

*** ** * ** ***

RingtoneManager provides access to ringtones, notification, and other types
of sounds. It manages querying the different media providers and combines the
results into a single cursor. It also provides a `https://developer.android.com/reference/android/media/Ringtone` for each
ringtone. We generically call these sounds ringtones, however the
`https://developer.android.com/reference/android/media/RingtoneManager#TYPE_RINGTONE` refers to the type of sounds that are suitable for the
phone ringer.


To show a ringtone picker to the user, use the
`https://developer.android.com/reference/android/media/RingtoneManager#ACTION_RINGTONE_PICKER` intent to launch the picker as a subactivity.
**See also:**

- `https://developer.android.com/reference/android/media/Ringtone`

## Summary

| ### Constants ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/RingtoneManager#ACTION_RINGTONE_PICKER` Activity Action: Shows a ringtone picker. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_DEFAULT_URI` Given to the ringtone picker as a `https://developer.android.com/reference/android/net/Uri`. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_EXISTING_URI` Given to the ringtone picker as a `https://developer.android.com/reference/android/net/Uri`. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_INCLUDE_DRM` *This constant was deprecated in API level 19. DRM ringtones are no longer supported* |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_PICKED_URI` Returned from the ringtone picker as a `https://developer.android.com/reference/android/net/Uri`. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_SHOW_DEFAULT` Given to the ringtone picker as a boolean. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_SHOW_SILENT` Given to the ringtone picker as a boolean. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_TITLE` Given to the ringtone picker as a `https://developer.android.com/reference/java/lang/CharSequence`. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_TYPE` Given to the ringtone picker as an int. |
| `int` | `https://developer.android.com/reference/android/media/RingtoneManager#ID_COLUMN_INDEX` The column index (in the cursor returned by `https://developer.android.com/reference/android/media/RingtoneManager#getCursor()` for the row ID. |
| `int` | `https://developer.android.com/reference/android/media/RingtoneManager#TITLE_COLUMN_INDEX` The column index (in the cursor returned by `https://developer.android.com/reference/android/media/RingtoneManager#getCursor()` for the title. |
| `int` | `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_ALARM` Type that refers to sounds that are used for the alarm. |
| `int` | `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_ALL` All types of sounds. |
| `int` | `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_NOTIFICATION` Type that refers to sounds that are used for notifications. |
| `int` | `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_RINGTONE` Type that refers to sounds that are used for the phone ringer. |
| `int` | `https://developer.android.com/reference/android/media/RingtoneManager#URI_COLUMN_INDEX` The column index (in the cursor returned by `https://developer.android.com/reference/android/media/RingtoneManager#getCursor()` for the media provider's URI. |

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/media/RingtoneManager#RingtoneManager(android.app.Activity)(https://developer.android.com/reference/android/app/Activity activity) ` Constructs a RingtoneManager. |
| ` https://developer.android.com/reference/android/media/RingtoneManager#RingtoneManager(android.content.Context)(https://developer.android.com/reference/android/content/Context context) ` Constructs a RingtoneManager. |

| ### Public methods ||
|---|---|
| ` static https://developer.android.com/reference/android/net/Uri` | ` https://developer.android.com/reference/android/media/RingtoneManager#getActualDefaultRingtoneUri(android.content.Context,%20int)(https://developer.android.com/reference/android/content/Context context, int type) ` Gets the current default sound's `https://developer.android.com/reference/android/net/Uri`. |
| ` https://developer.android.com/reference/android/database/Cursor` | ` https://developer.android.com/reference/android/media/RingtoneManager#getCursor()() ` Returns a `https://developer.android.com/reference/android/database/Cursor` of all the ringtones available. |
| ` static int` | ` https://developer.android.com/reference/android/media/RingtoneManager#getDefaultType(android.net.Uri)(https://developer.android.com/reference/android/net/Uri defaultRingtoneUri) ` Returns the type of a default `https://developer.android.com/reference/android/net/Uri`. |
| ` static https://developer.android.com/reference/android/net/Uri` | ` https://developer.android.com/reference/android/media/RingtoneManager#getDefaultUri(int)(int type) ` Returns the `https://developer.android.com/reference/android/net/Uri` for the default ringtone of a particular type. |
| ` boolean` | ` https://developer.android.com/reference/android/media/RingtoneManager#getIncludeDrm()() ` *This method was deprecated in API level 19. DRM ringtones are no longer supported* |
| ` static https://developer.android.com/reference/android/media/Ringtone` | ` https://developer.android.com/reference/android/media/RingtoneManager#getRingtone(android.content.Context,%20android.net.Uri)(https://developer.android.com/reference/android/content/Context context, https://developer.android.com/reference/android/net/Uri ringtoneUri) ` Returns a `https://developer.android.com/reference/android/media/Ringtone` for a given sound URI. |
| ` https://developer.android.com/reference/android/media/Ringtone` | ` https://developer.android.com/reference/android/media/RingtoneManager#getRingtone(int)(int position) ` Gets a `https://developer.android.com/reference/android/media/Ringtone` for the ringtone at the given position in the `https://developer.android.com/reference/android/database/Cursor`. |
| ` int` | ` https://developer.android.com/reference/android/media/RingtoneManager#getRingtonePosition(android.net.Uri)(https://developer.android.com/reference/android/net/Uri ringtoneUri) ` Gets the position of a `https://developer.android.com/reference/android/net/Uri` within this `https://developer.android.com/reference/android/media/RingtoneManager`. |
| ` https://developer.android.com/reference/android/net/Uri` | ` https://developer.android.com/reference/android/media/RingtoneManager#getRingtoneUri(int)(int position) ` Gets a `https://developer.android.com/reference/android/net/Uri` for the ringtone at the given position in the `https://developer.android.com/reference/android/database/Cursor`. |
| ` static https://developer.android.com/reference/android/net/Uri` | ` https://developer.android.com/reference/android/media/RingtoneManager#getRingtoneUriForPhoneAccountHandle(android.content.Context,%20android.telecom.PhoneAccountHandle)(https://developer.android.com/reference/android/content/Context context, https://developer.android.com/reference/android/telecom/PhoneAccountHandle phoneAccountHandle) ` Gets TYPE_RINGTONE's `https://developer.android.com/reference/android/net/Uri` by id of `https://developer.android.com/reference/android/telecom/PhoneAccountHandle`. |
| ` boolean` | ` https://developer.android.com/reference/android/media/RingtoneManager#getStopPreviousRingtone()() ` |
| ` static https://developer.android.com/reference/android/net/Uri` | ` https://developer.android.com/reference/android/media/RingtoneManager#getValidRingtoneUri(android.content.Context)(https://developer.android.com/reference/android/content/Context context) ` Returns a valid ringtone URI. |
| ` boolean` | ` https://developer.android.com/reference/android/media/RingtoneManager#hasHapticChannels(int)(int position) ` Returns if the `https://developer.android.com/reference/android/media/Ringtone` at the given position in the `https://developer.android.com/reference/android/database/Cursor` contains haptic channels. |
| ` static boolean` | ` https://developer.android.com/reference/android/media/RingtoneManager#hasHapticChannels(android.net.Uri)(https://developer.android.com/reference/android/net/Uri ringtoneUri) ` Returns if the `https://developer.android.com/reference/android/media/Ringtone` from a given sound URI contains haptic channels or not. |
| ` static boolean` | ` https://developer.android.com/reference/android/media/RingtoneManager#hasHapticChannels(android.content.Context,%20android.net.Uri)(https://developer.android.com/reference/android/content/Context context, https://developer.android.com/reference/android/net/Uri ringtoneUri) ` Returns if the `https://developer.android.com/reference/android/media/Ringtone` from a given sound URI contains haptics channels or not. |
| ` int` | ` https://developer.android.com/reference/android/media/RingtoneManager#inferStreamType()() ` Infers the volume stream type based on what type of ringtones this manager is returning. |
| ` static boolean` | ` https://developer.android.com/reference/android/media/RingtoneManager#isDefault(android.net.Uri)(https://developer.android.com/reference/android/net/Uri ringtoneUri) ` Returns whether the given `https://developer.android.com/reference/android/net/Uri` is one of the default ringtones. |
| ` static https://developer.android.com/reference/android/content/res/AssetFileDescriptor` | ` https://developer.android.com/reference/android/media/RingtoneManager#openDefaultRingtoneUri(android.content.Context,%20android.net.Uri)(https://developer.android.com/reference/android/content/Context context, https://developer.android.com/reference/android/net/Uri uri) ` Opens a raw file descriptor to read the data under the given default URI. |
| ` static void` | ` https://developer.android.com/reference/android/media/RingtoneManager#setActualDefaultRingtoneUri(android.content.Context,%20int,%20android.net.Uri)(https://developer.android.com/reference/android/content/Context context, int type, https://developer.android.com/reference/android/net/Uri ringtoneUri) ` Sets the `https://developer.android.com/reference/android/net/Uri` of the default sound for a given sound type. |
| ` void` | ` https://developer.android.com/reference/android/media/RingtoneManager#setIncludeDrm(boolean)(boolean includeDrm) ` *This method was deprecated in API level 19. DRM ringtones are no longer supported* |
| ` static void` | ` https://developer.android.com/reference/android/media/RingtoneManager#setRingtoneUri(android.content.Context,%20android.net.Uri,%20android.telecom.PhoneAccountHandle)(https://developer.android.com/reference/android/content/Context context, https://developer.android.com/reference/android/net/Uri ringtoneUri, https://developer.android.com/reference/android/telecom/PhoneAccountHandle phoneAccountHandle) ` Sets the `https://developer.android.com/reference/android/net/Uri` of the sound by `https://developer.android.com/reference/android/telecom/PhoneAccountHandle` for TYPE_RINGTONE. |
| ` void` | ` https://developer.android.com/reference/android/media/RingtoneManager#setStopPreviousRingtone(boolean)(boolean stopPreviousRingtone) ` Whether retrieving another `https://developer.android.com/reference/android/media/Ringtone` will stop playing the previously retrieved `https://developer.android.com/reference/android/media/Ringtone`. |
| ` void` | ` https://developer.android.com/reference/android/media/RingtoneManager#setType(int)(int type) ` Sets which type(s) of ringtones will be listed by this. |
| ` void` | ` https://developer.android.com/reference/android/media/RingtoneManager#stopPreviousRingtone()() ` Stops playing the last `https://developer.android.com/reference/android/media/Ringtone` retrieved from this. |

| ### 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*. | ||

## Constants

### ACTION_RINGTONE_PICKER

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

```
public static final String ACTION_RINGTONE_PICKER
```

Activity Action: Shows a ringtone picker.


Input: `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_EXISTING_URI`,
`https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_SHOW_DEFAULT`,
`https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_SHOW_SILENT`, `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_TYPE`,
`https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_DEFAULT_URI`, `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_TITLE`,


Output: `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_PICKED_URI`.

<br />

Constant Value:

"android.intent.action.RINGTONE_PICKER"


### EXTRA_RINGTONE_DEFAULT_URI

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

```
public static final String EXTRA_RINGTONE_DEFAULT_URI
```

Given to the ringtone picker as a `https://developer.android.com/reference/android/net/Uri`. The `https://developer.android.com/reference/android/net/Uri` of the
ringtone to play when the user attempts to preview the "Default"
ringtone. This can be one of `https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_RINGTONE_URI`,
`https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_NOTIFICATION_URI`, or
`https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_ALARM_ALERT_URI` to have the "Default" point to
the current sound for the given default sound type. If you are showing a
ringtone picker for some other type of sound, you are free to provide any
`https://developer.android.com/reference/android/net/Uri` here.

<br />

Constant Value:

"android.intent.extra.ringtone.DEFAULT_URI"


### EXTRA_RINGTONE_EXISTING_URI

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

```
public static final String EXTRA_RINGTONE_EXISTING_URI
```

Given to the ringtone picker as a `https://developer.android.com/reference/android/net/Uri`. The `https://developer.android.com/reference/android/net/Uri` of the
current ringtone, which will be used to show a checkmark next to the item
for this `https://developer.android.com/reference/android/net/Uri`. If showing an item for "Default" (@see
`https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_SHOW_DEFAULT`), this can also be one of
`https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_RINGTONE_URI`,
`https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_NOTIFICATION_URI`, or
`https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_ALARM_ALERT_URI` to have the "Default" item
checked.

<br />

**See also:**

- `https://developer.android.com/reference/android/media/RingtoneManager#ACTION_RINGTONE_PICKER`

Constant Value:

"android.intent.extra.ringtone.EXISTING_URI"


### EXTRA_RINGTONE_INCLUDE_DRM

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

```
public static final String EXTRA_RINGTONE_INCLUDE_DRM
```


**This constant was deprecated
in API level 19.**   

DRM ringtones are no longer supported

Given to the ringtone picker as a boolean. Whether to include DRM ringtones.

<br />

Constant Value:

"android.intent.extra.ringtone.INCLUDE_DRM"


### EXTRA_RINGTONE_PICKED_URI

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

```
public static final String EXTRA_RINGTONE_PICKED_URI
```

Returned from the ringtone picker as a `https://developer.android.com/reference/android/net/Uri`.


It will be one of:
- the picked ringtone,
- a `https://developer.android.com/reference/android/net/Uri` that equals `https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_RINGTONE_URI`, `https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_NOTIFICATION_URI`, or `https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_ALARM_ALERT_URI` if the default was chosen,
- null if the "Silent" item was picked.<br />

  <br />

  **See also:**
  - `https://developer.android.com/reference/android/media/RingtoneManager#ACTION_RINGTONE_PICKER`

  Constant Value:

  "android.intent.extra.ringtone.PICKED_URI"


### EXTRA_RINGTONE_SHOW_DEFAULT

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

```
public static final String EXTRA_RINGTONE_SHOW_DEFAULT
```

Given to the ringtone picker as a boolean. Whether to show an item for
"Default".

<br />

**See also:**

- `https://developer.android.com/reference/android/media/RingtoneManager#ACTION_RINGTONE_PICKER`

Constant Value:

"android.intent.extra.ringtone.SHOW_DEFAULT"


### EXTRA_RINGTONE_SHOW_SILENT

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

```
public static final String EXTRA_RINGTONE_SHOW_SILENT
```

Given to the ringtone picker as a boolean. Whether to show an item for
"Silent". If the "Silent" item is picked,
`https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_PICKED_URI` will be null.

<br />

**See also:**

- `https://developer.android.com/reference/android/media/RingtoneManager#ACTION_RINGTONE_PICKER`

Constant Value:

"android.intent.extra.ringtone.SHOW_SILENT"


### EXTRA_RINGTONE_TITLE

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

```
public static final String EXTRA_RINGTONE_TITLE
```

Given to the ringtone picker as a `https://developer.android.com/reference/java/lang/CharSequence`. The title to
show for the ringtone picker. This has a default value that is suitable
in most cases.

<br />

Constant Value:

"android.intent.extra.ringtone.TITLE"


### EXTRA_RINGTONE_TYPE

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

```
public static final String EXTRA_RINGTONE_TYPE
```

Given to the ringtone picker as an int. Specifies which ringtone type(s) should be
shown in the picker. One or more of `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_RINGTONE`,
`https://developer.android.com/reference/android/media/RingtoneManager#TYPE_NOTIFICATION`, `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_ALARM`, or `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_ALL`
(bitwise-ored together).

<br />

Constant Value:

"android.intent.extra.ringtone.TYPE"


### ID_COLUMN_INDEX

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

```
public static final int ID_COLUMN_INDEX
```

The column index (in the cursor returned by `https://developer.android.com/reference/android/media/RingtoneManager#getCursor()` for the
row ID.

<br />

Constant Value:

0
(0x00000000)


### TITLE_COLUMN_INDEX

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

```
public static final int TITLE_COLUMN_INDEX
```

The column index (in the cursor returned by `https://developer.android.com/reference/android/media/RingtoneManager#getCursor()` for the
title.

<br />

Constant Value:

1
(0x00000001)


### TYPE_ALARM

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

```
public static final int TYPE_ALARM
```

Type that refers to sounds that are used for the alarm.

<br />

Constant Value:

4
(0x00000004)


### TYPE_ALL

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

```
public static final int TYPE_ALL
```

All types of sounds.

<br />

Constant Value:

7
(0x00000007)


### TYPE_NOTIFICATION

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

```
public static final int TYPE_NOTIFICATION
```

Type that refers to sounds that are used for notifications.

<br />

Constant Value:

2
(0x00000002)


### TYPE_RINGTONE

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

```
public static final int TYPE_RINGTONE
```

Type that refers to sounds that are used for the phone ringer.

<br />

Constant Value:

1
(0x00000001)


### URI_COLUMN_INDEX

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

```
public static final int URI_COLUMN_INDEX
```

The column index (in the cursor returned by `https://developer.android.com/reference/android/media/RingtoneManager#getCursor()` for the
media provider's URI.

<br />

Constant Value:

2
(0x00000002)


## Public constructors

### RingtoneManager

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

```
public RingtoneManager (Activity activity)
```

Constructs a RingtoneManager. This constructor is recommended as its
constructed instance manages cursor(s).

<br />

| Parameters ||
|---|---|
| `activity` | `Activity`: The activity used to get a managed cursor. <br /> |

### RingtoneManager

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

```
public RingtoneManager (Context context)
```

Constructs a RingtoneManager. The instance constructed by this
constructor will not manage the cursor(s), so the client should handle
this itself.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: The context to used to get a cursor. <br /> |

## Public methods

### getActualDefaultRingtoneUri

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

```
public static Uri getActualDefaultRingtoneUri (Context context, 
                int type)
```

Gets the current default sound's `https://developer.android.com/reference/android/net/Uri`. This will give the actual
sound `https://developer.android.com/reference/android/net/Uri`, instead of using this, most clients can use
`https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_RINGTONE_URI`.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: A context used for querying. <br /> |
| `type` | `int`: The type whose default sound should be returned. One of `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_RINGTONE`, `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_NOTIFICATION`, or `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_ALARM`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/Uri` | A `https://developer.android.com/reference/android/net/Uri` pointing to the default sound for the sound type. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/RingtoneManager#setActualDefaultRingtoneUri(android.content.Context,%20int,%20android.net.Uri)`

### getCursor

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

```
public Cursor getCursor ()
```

Returns a `https://developer.android.com/reference/android/database/Cursor` of all the ringtones available. The returned
cursor will be the same cursor returned each time this method is called,
so do not `https://developer.android.com/reference/android/database/Cursor#close()` the cursor. The cursor can be
`https://developer.android.com/reference/android/database/Cursor#deactivate()` safely.


If `https://developer.android.com/reference/android/media/RingtoneManager#RingtoneManager(android.app.Activity)` was not used, the
caller should manage the returned cursor through its activity's life
cycle to prevent leaking the cursor.


Note that the list of ringtones available will differ depending on whether the caller
has the `https://developer.android.com/reference/android/Manifest.permission#READ_EXTERNAL_STORAGE` permission.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/database/Cursor` | A `https://developer.android.com/reference/android/database/Cursor` of all the ringtones available. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/RingtoneManager#ID_COLUMN_INDEX`
- `https://developer.android.com/reference/android/media/RingtoneManager#TITLE_COLUMN_INDEX`
- `https://developer.android.com/reference/android/media/RingtoneManager#URI_COLUMN_INDEX`

### getDefaultType

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

```
public static int getDefaultType (Uri defaultRingtoneUri)
```

Returns the type of a default `https://developer.android.com/reference/android/net/Uri`.

<br />

| Parameters ||
|---|---|
| `defaultRingtoneUri` | `Uri`: The default `https://developer.android.com/reference/android/net/Uri`. For example, `https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_RINGTONE_URI`, `https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_NOTIFICATION_URI`, or `https://developer.android.com/reference/android/provider/Settings.System#DEFAULT_ALARM_ALERT_URI`. <br /> |

| Returns ||
|---|---|
| `int` | The type of the defaultRingtoneUri, or -1. <br /> |

### getDefaultUri

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

```
public static Uri getDefaultUri (int type)
```

Returns the `https://developer.android.com/reference/android/net/Uri` for the default ringtone of a particular type.
Rather than returning the actual ringtone's sound `https://developer.android.com/reference/android/net/Uri`, this will
return the symbolic `https://developer.android.com/reference/android/net/Uri` which will resolved to the actual sound
when played.

<br />

| Parameters ||
|---|---|
| `type` | `int`: The ringtone type whose default should be returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/Uri` | The `https://developer.android.com/reference/android/net/Uri` of the default ringtone for the given type. <br /> |

### getIncludeDrm

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

```
public boolean getIncludeDrm ()
```


**This method was deprecated
in API level 19.**   

DRM ringtones are no longer supported

Returns whether DRM ringtones will be included.

<br />

| Returns ||
|---|---|
| `boolean` | Whether DRM ringtones will be included. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/RingtoneManager#setIncludeDrm(boolean)`

### getRingtone

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

```
public static Ringtone getRingtone (Context context, 
                Uri ringtoneUri)
```

Returns a `https://developer.android.com/reference/android/media/Ringtone` for a given sound URI.


If the given URI cannot be opened for any reason, this method will
attempt to fallback on another sound. If it cannot find any, it will
return null.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: A context used to query. <br /> |
| `ringtoneUri` | `Uri`: The `https://developer.android.com/reference/android/net/Uri` of a sound or ringtone. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/Ringtone` | A `https://developer.android.com/reference/android/media/Ringtone` for the given URI, or null. <br /> |

### getRingtone

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

```
public Ringtone getRingtone (int position)
```

Gets a `https://developer.android.com/reference/android/media/Ringtone` for the ringtone at the given position in the
`https://developer.android.com/reference/android/database/Cursor`.

<br />

| Parameters ||
|---|---|
| `position` | `int`: The position (in the `https://developer.android.com/reference/android/database/Cursor`) of the ringtone. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/Ringtone` | A `https://developer.android.com/reference/android/media/Ringtone` pointing to the ringtone. <br /> |

### getRingtonePosition

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

```
public int getRingtonePosition (Uri ringtoneUri)
```

Gets the position of a `https://developer.android.com/reference/android/net/Uri` within this `https://developer.android.com/reference/android/media/RingtoneManager`.

<br />

| Parameters ||
|---|---|
| `ringtoneUri` | `Uri`: The `https://developer.android.com/reference/android/net/Uri` to retreive the position of. <br /> |

| Returns ||
|---|---|
| `int` | The position of the `https://developer.android.com/reference/android/net/Uri`, or -1 if it cannot be found. <br /> |

### getRingtoneUri

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

```
public Uri getRingtoneUri (int position)
```

Gets a `https://developer.android.com/reference/android/net/Uri` for the ringtone at the given position in the `https://developer.android.com/reference/android/database/Cursor`.

<br />

| Parameters ||
|---|---|
| `position` | `int`: The position (in the `https://developer.android.com/reference/android/database/Cursor`) of the ringtone. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/Uri` | A `https://developer.android.com/reference/android/net/Uri` pointing to the ringtone. <br /> |

### getRingtoneUriForPhoneAccountHandle

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

```
public static Uri getRingtoneUriForPhoneAccountHandle (Context context, 
                PhoneAccountHandle phoneAccountHandle)
```

Gets TYPE_RINGTONE's `https://developer.android.com/reference/android/net/Uri` by id of `https://developer.android.com/reference/android/telecom/PhoneAccountHandle`.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: A context used for querying. This value cannot be `null`. <br /> |
| `phoneAccountHandle` | `PhoneAccountHandle`: The `https://developer.android.com/reference/android/telecom/PhoneAccountHandle` whose sound should be returned. If null, the default ringtone will be returned. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/Uri` | A `https://developer.android.com/reference/android/net/Uri` pointing to the sound for TYPE_RINGTONE. This value may be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/RingtoneManager#setRingtoneUri(android.content.Context,%20android.net.Uri,%20android.telecom.PhoneAccountHandle)`

### getStopPreviousRingtone

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

```
public boolean getStopPreviousRingtone ()
```

<br />

<br />

| Returns ||
|---|---|
| `boolean` | <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/RingtoneManager#setStopPreviousRingtone(boolean)`

### getValidRingtoneUri

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

```
public static Uri getValidRingtoneUri (Context context)
```

Returns a valid ringtone URI. No guarantees on which it returns. If it
cannot find one, returns null. If it can only find one on external storage and the caller
doesn't have the `https://developer.android.com/reference/android/Manifest.permission#READ_EXTERNAL_STORAGE` permission,
returns null.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: The context to use for querying. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/Uri` | A ringtone URI, or null if one cannot be found. <br /> |

### hasHapticChannels

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

```
public boolean hasHapticChannels (int position)
```

Returns if the `https://developer.android.com/reference/android/media/Ringtone` at the given position in the
`https://developer.android.com/reference/android/database/Cursor` contains haptic channels.

<br />

| Parameters ||
|---|---|
| `position` | `int`: The position (in the `https://developer.android.com/reference/android/database/Cursor`) of the ringtone. <br /> |

| Returns ||
|---|---|
| `boolean` | true if the ringtone contains haptic channels. <br /> |

### hasHapticChannels

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

```
public static boolean hasHapticChannels (Uri ringtoneUri)
```

Returns if the `https://developer.android.com/reference/android/media/Ringtone` from a given sound URI contains
haptic channels or not. As this function doesn't has a context
to resolve the uri, the result may be wrong if the uri cannot be
resolved correctly.
Use `https://developer.android.com/reference/android/media/RingtoneManager#hasHapticChannels(int)` or `https://developer.android.com/reference/android/media/RingtoneManager#hasHapticChannels(android.content.Context,%20android.net.Uri)`
instead when possible.

<br />

| Parameters ||
|---|---|
| `ringtoneUri` | `Uri`: The `https://developer.android.com/reference/android/net/Uri` of a sound or ringtone. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | true if the ringtone contains haptic channels. <br /> |

### hasHapticChannels

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

```
public static boolean hasHapticChannels (Context context, 
                Uri ringtoneUri)
```

Returns if the `https://developer.android.com/reference/android/media/Ringtone` from a given sound URI contains haptics channels or not.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: the `https://developer.android.com/reference/android/content/Context` to use when resolving the Uri. This value cannot be `null`. <br /> |
| `ringtoneUri` | `Uri`: the `https://developer.android.com/reference/android/net/Uri` of a sound or ringtone. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | true if the ringtone contains haptic channels. <br /> |

### inferStreamType

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

```
public int inferStreamType ()
```

Infers the volume stream type based on what type of ringtones this
manager is returning.

<br />

| Returns ||
|---|---|
| `int` | The stream type. <br /> |

### isDefault

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

```
public static boolean isDefault (Uri ringtoneUri)
```

Returns whether the given `https://developer.android.com/reference/android/net/Uri` is one of the default ringtones.

<br />

| Parameters ||
|---|---|
| `ringtoneUri` | `Uri`: The ringtone `https://developer.android.com/reference/android/net/Uri` to be checked. <br /> |

| Returns ||
|---|---|
| `boolean` | Whether the `https://developer.android.com/reference/android/net/Uri` is a default. <br /> |

### openDefaultRingtoneUri

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

```
public static AssetFileDescriptor openDefaultRingtoneUri (Context context, 
                Uri uri)
```

Opens a raw file descriptor to read the data under the given default URI.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: the Context to use when resolving the Uri. This value cannot be `null`. <br /> |
| `uri` | `Uri`: The desired default URI to open. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/res/AssetFileDescriptor` | a new AssetFileDescriptor pointing to the file. You own this descriptor and are responsible for closing it when done. This value may be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/FileNotFoundException` | if the provided URI could not be opened. |

**See also:**

- `https://developer.android.com/reference/android/media/RingtoneManager#getDefaultUri(int)`

### setActualDefaultRingtoneUri

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

```
public static void setActualDefaultRingtoneUri (Context context, 
                int type, 
                Uri ringtoneUri)
```

Sets the `https://developer.android.com/reference/android/net/Uri` of the default sound for a given sound type.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: A context used for querying. <br /> |
| `type` | `int`: The type whose default sound should be set. One of `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_RINGTONE`, `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_NOTIFICATION`, or `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_ALARM`. <br /> |
| `ringtoneUri` | `Uri`: A `https://developer.android.com/reference/android/net/Uri` pointing to the default sound to set. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/RingtoneManager#getActualDefaultRingtoneUri(android.content.Context,%20int)`

### setIncludeDrm

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

```
public void setIncludeDrm (boolean includeDrm)
```


**This method was deprecated
in API level 19.**   

DRM ringtones are no longer supported

Sets whether to include DRM ringtones.

<br />

| Parameters ||
|---|---|
| `includeDrm` | `boolean`: Whether to include DRM ringtones. Obsolete - no longer has any effect <br /> |

### setRingtoneUri

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

```
public static void setRingtoneUri (Context context, 
                Uri ringtoneUri, 
                PhoneAccountHandle phoneAccountHandle)
```

Sets the `https://developer.android.com/reference/android/net/Uri` of the sound by `https://developer.android.com/reference/android/telecom/PhoneAccountHandle` for TYPE_RINGTONE.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: A context used for querying. This value cannot be `null`. <br /> |
| `ringtoneUri` | `Uri`: A `https://developer.android.com/reference/android/net/Uri` pointing to the sound to set. This parameter can be null, in which case the API behaves like `https://developer.android.com/reference/android/media/RingtoneManager#setActualDefaultRingtoneUri(android.content.Context,%20int,%20android.net.Uri)`. <br /> |
| `phoneAccountHandle` | `PhoneAccountHandle`: The `https://developer.android.com/reference/android/telecom/PhoneAccountHandle` whose sound should be set. This parameter can be null, in which case the API behaves like `https://developer.android.com/reference/android/media/RingtoneManager#setActualDefaultRingtoneUri(android.content.Context,%20int,%20android.net.Uri)`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/RingtoneManager#getRingtoneUriForPhoneAccountHandle(android.content.Context,%20android.telecom.PhoneAccountHandle)`

### setStopPreviousRingtone

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

```
public void setStopPreviousRingtone (boolean stopPreviousRingtone)
```

Whether retrieving another `https://developer.android.com/reference/android/media/Ringtone` will stop playing the
previously retrieved `https://developer.android.com/reference/android/media/Ringtone`.


If this is false, make sure to `https://developer.android.com/reference/android/media/Ringtone#stop()` any previous
ringtones to free resources.

<br />

| Parameters ||
|---|---|
| `stopPreviousRingtone` | `boolean`: If true, the previously retrieved `https://developer.android.com/reference/android/media/Ringtone` will be stopped. <br /> |

### setType

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

```
public void setType (int type)
```

Sets which type(s) of ringtones will be listed by this.

<br />

| Parameters ||
|---|---|
| `type` | `int`: The type(s), one or more of `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_RINGTONE`, `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_NOTIFICATION`, `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_ALARM`, `https://developer.android.com/reference/android/media/RingtoneManager#TYPE_ALL`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/RingtoneManager#EXTRA_RINGTONE_TYPE`

### stopPreviousRingtone

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

```
public void stopPreviousRingtone ()
```

Stops playing the last `https://developer.android.com/reference/android/media/Ringtone` retrieved from this.

<br />