Как поделиться аудио в Telegram

Я хочу сделать кнопку, чтобы поделиться аудиофайлом в Telegram. У меня проблемы только с Telegram (поделиться в WhatsApp работает нормально).

Мой аудиофайл находится в необработанной папке, и я пробовал с расширениями .mp3, .wav и .m4a, но если я попытаюсь поделиться аудио в телеграмме, я получаю тост «Неподдерживаемое вложение».

Это мой метод обмена:

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("audio/m4a");
share.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://" + ctx.getPackageName() + "/" + R.raw.my_audio));
startActivity(Intent.createChooser(share, "Share on:"));

person genialFactory    schedule 01.10.2015    source источник


Ответы (2)


используйте «Uri.fromFile», это сработало для меня.

                File file = new File(filePath);
                Uri uri = Uri.fromFile(file);
                Intent share = new Intent(Intent.ACTION_SEND);
                share.setType("audio/*");
                share.putExtra(Intent.EXTRA_STREAM, uri);
                startActivity(Intent.createChooser(share,
                        "به اشتراک گذاشتن فایل"));
person Siyawash    schedule 15.03.2016

Многие приложения для Android не поддерживают плохо используемую схему android.resource://. Если вам нужна лучшая совместимость, запишите звук в файл и поделитесь им или используйте ContentProvider (например, мой StreamProvider ), чтобы обслуживать его по схеме content://.

person CommonsWare    schedule 01.10.2015
comment
Как я могу использовать ContentProvider? - person genialFactory; 01.10.2015
comment
@genialFactory: вам нужно будет написать тот, который будет передавать содержимое ресурса обратно из openFile() или, возможно, openAssetFile(). В этом примере приложения показана основная концепция, хотя в нем используется файл в assets/, а не необработанный ресурс. - person CommonsWare; 01.10.2015