какой должен путь к файлу mp3 в папке Raw

mediaPlayer.setDataSource("android.resource://" + packageName + "/" + R.raw.salo)
mediaPlayer.setDataSource(this,Uri.parse("android.resource://" + packageName + "res/raw/salo"))
mediaPlayer.setDataSource(this,Uri.parse("android.resource://com.example.mpppppppppp/res/raw/salo"))
mediaPlayer.setDataSource("com.example.mpppppppppp/res/raw/salo")
mediaPlayer.setDataSource(this, Uri.parse("android.resource://com.example.mpppppppppp" +  R.raw.salo))

Ответы (1 шт):

Автор решения: woesss

Есть два варианта формата такого uri:

android.resource://package_name/id_number
android.resource://package_name/type/name

Первый не подходит для длительного хранения в ПЗУ (в файлах, БД, преференсах и т.п.), так как идентификаторы генерируются при сборке и после обновления приложения могут измениться. Во втором используется имя ресурса, которое изменится только если вы сами его измените.
Примеры:

val uri = Uri.Builder()
    .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
    .authority(context.packageName)
    .path(Integer.toString(R.raw.salo))
    .build();
mediaPlayer.setDataSource(context, uri);
val uri = Uri.Builder()
    .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
    .authority(context.packageName)
    .appendPath("raw")
    .appendPath("salo")
    .build();
mediaPlayer.setDataSource(context, uri);
→ Ссылка