У меня есть много файлов .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.
Не создавайте строку самостоятельно, используйте 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.