Я пытаюсь поделиться mp3-аудио из приложения, проблема в том, что звук отправляется без формата, я читал о его сохранении во внешнюю память, а затем делюсь им, но у меня нет внешней памяти, есть способ сохранить его во внутреннюю память или что-то в этом роде? Благодарю. вот код:
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("audio/mpeg3");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Los simuladores");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://arg.com.cevascoit.botoneralossimuladores/" + R.raw.teagachas));
startActivity(Intent.createChooser(sendIntent, getString(R.string.app_name)));
return false;
Ой, извините, я новичок в этом. Тогда почему, когда я использую код для сохранения во внешнем хранилище, у меня возникает ошибка?
Вы можете задать отдельный вопрос о переполнении стека, где вы указываете минимальный воспроизводимый пример. Это будет включать сведения об ошибке (например, трассировку стека) и ваш код, который вызывает ошибку.




Используйте FileProvider, как в этом примере:
Сначала создайте файл во внутренней памяти (например, ваш mp3-файл)
File sharedDir = new File(getFilesDir(), "shared");
if (!sharedDir.exists())
sharedDir.mkdir();
File fileToShare = new File(sharedDir, "hello_world.txt");
Writer writer = new OutputStreamWriter(new FileOutputStream(fileToShare));
writer.write("Hello World");
writer.close();
Затем определите FileProvider в манифесте
<provider
android:name = "android.support.v4.content.FileProvider"
android:authorities = "ese.fileprovider"
android:grantUriPermissions = "true"
android:exported = "false">
<meta-data
android:name = "android.support.FILE_PROVIDER_PATHS"
android:resource = "@xml/filepaths" />;
</provider>;
Затем укажите каталоги для совместного использования в filepaths.xml.
<files-path
name = "shared files"
path = "shared/" />
Создайте URI для файла
Uri uri = FileProvider.getUriForFile(this, "ese.fileprovider", fileToShare);
Поделиться файлом
Intent shareFile = new Intent(Intent.ACTION_SEND);
shareFile.setType("application/pdf");
shareFile.putExtra(Intent.EXTRA_STREAM, uri);
shareFile.putExtra(Intent.EXTRA_SUBJECT, "Sharing " + fileToShare.getName());
shareFile.putExtra(Intent.EXTRA_TEXT, "Sharing File");
startActivity(Intent.createChooser(shareFile, "Share File"));
«но у меня нет внешней памяти» - почти каждое устройство Android имеет внешнее хранилище. «(Нет SD-карты)» - SD-карта - это не то, что Android SDK называет внешним хранилищем.