Get URI of .mp3 file stored in res/raw folder in android

This work like magic: Assuming the mp3 is saved in the raw folder as


then simple doing this works:

Uri uri=Uri.parse("android.resource://"+getPackageName()+"/raw/notification_sound");

Finally after searching a lot i found the solution.

If you want to get any resource URI then there are two ways :

  1. Using Resource Name

    Syntax : android.resource://[package]/[res type]/[res name]

    Example : Uri.parse("android.resource://");

  2. Using Resource Id

    Syntax : android.resource://[package]/[resource_id]

    Example : Uri.parse("android.resource://" + R.drawable.icon);

This were the examples to get the URI of any image file stored in drawable folder.

Similarly you can get URIs of res/raw folder.

In my case i used 1st way ie. Using Resource Name

Don't construct string on your own, use Uri.Builder:

 * @param resourceId identifies an application resource
 * @return the Uri by which the application resource is accessed
internal fun Context.getResourceUri(@AnyRes resourceId: Int): Uri = Uri.Builder()

From AOSP-DeskClock.