2016-11-29 13 views
2

Я использую следующий фрагмент кода, чтобы разделить звуковой файл, расположенный на устройстве:Не можете поделиться аудио с Facebook Messenger на Android: «К сожалению, Посыльный не смог обработать этот файл»

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_SEND); 
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://pathToFile")); 
intent.setType("audio/*"); 
activity.startActivity(Intent.createChooser(intent, "Share...")); 

Android открывает диалоговое окно «Совместное использование системы», в котором вы можете выбрать подходящее приложение для обработки намерений совместного использования. Аудиофайлы успешно делятся с Gmail, WhatsApp, Telegram и Google Диском.

Но Посланник показывает следующее сообщение об ошибке:

enter image description here

Однако, когда я пытаюсь делить один и тот же файл с помощью загрузки приложения Андроида, все это прекрасно работает с Messenger.

enter image description here

Почему Посланник не обрабатывает мой запрос акций правильно, в то время как все другие приложения делают, и что нужно изменить в своем коде, поэтому он будет работать точно так же, как обмен от загрузки приложения (так это будет работать для Посланника)?

ответ

3

Я узнал, что Facebook Messenger не принимает имена файлов, которые содержат пробелы на них, это означает, что вы не можете поделиться аудио-файлом с именем «audio test.mp3», но он будет работать нормально, если он называется «audio_test .mp3"

Он также не будет принимать не-ASCII символы (ä, ö, ñ, ç, и т.д.)

+0

Правильно. В конце концов я изменил это: 'intent.putExtra (Intent.EXTRA_STREAM, Uri.parse ("Файл: // pathToFile"));' к этому: 'intent.putExtra (Intent.EXTRA_STREAM, Uri.fromFile (новый файл (pathToFile))); ' и все это начало работать во всех случаях. Похоже, что у приложения Facebook есть ошибка, и он не обрабатывает URL-адреса правильно. Поэтому важно, как вы его создаете. – csbubbles

1

Я столкнулся с этой проблемой с долгого времени, что я сделал на самом деле ставил эти 2 линии кода, и теперь он может работать для любого формата файла и любого имени файла.

intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(pathToFile))); 

Благодаря @csbubbles для его комментариев.