Получить URI файла .mp3, хранящегося в папке res / raw в android

У меня есть много файлов .mp3, хранящихся в папке res / raw.

Я получаю URI файла .mp3, используя следующий код.

Uri.parse("android.resource:///com.my.android.sharesound/"+resId);

Это возвращает: android.resource: ///com.my.android.sharesound/2130968609

Теперь я использую этот URI при создании общего намерения

    shareIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("android.resource://com.my.android.sharesound/"+resId));
    startActivity(Intent.createChooser(shareIntent,"Share Sound");

Когда я выбираю любое почтовое приложение, например. Gmail или YahooMail из намерения поделиться, mp3-файл успешно прикреплен. Но он показывает, что 2130968609 (как вложение)

я не хочу, чтобы отображался resourceId (2130968609).

Я хочу отобразить fileName.mp3

Как я могу это сделать? Я что-то упустил?

ИЛИ

Есть ли другой способ прикрепить файл .mp3, хранящийся в res / raw, к почте через Share Intent.

52
задан Kartik Domadiya 1 November 2011 в 19:19
поделиться

1 ответ

Не создавайте строку самостоятельно, используйте 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()
    .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
    .authority(packageName)
    .path(resourceId.toString())
    .build()

От AOSP-DeskClock.

0
ответ дан 7 November 2019 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: