2015-10-01 2 views
0

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

Мой аудиофайл находится в сырой папке, и я пробовал с расширениями .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:")); 

ответ

0

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

+0

Как я могу использовать ContentProvider? – genialFactory

+0

@genialFactory: вам нужно написать тот, который будет перенаправлять содержимое ресурса из 'openFile()' или, возможно, 'openAssetFile()'. [Это пример приложения] (https://github.com/commonsguy/cw-omnibus/tree/master/ContentProvider/GrantUriPermissions) показывает основную концепцию, хотя она использует файл в 'assets /', а не как исходный ресурс. – CommonsWare

4

использование «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, 
         "به اشتراک گذاشتن فایل")); 
+0

Точка использует Uri.fromFile() вместо Uri.parse() –