Поделиться аудиофайлом (.mp3) через Facebook, электронную почту и SMS / MMS

#android #facebook #audio #facebook-graph-api #share

#Android #Facebook #Аудио #facebook-graph-api #Поделиться

Вопрос:

У меня есть аудиофайл (.mp3) и некоторая информация, связанная с ним. Я хочу поделиться с Facebook, электронной почтой, SMS / MMS и т. Д..

Что я сделал: когда пользователь нажимает на кнопку «Поделиться», появляется список всех поддерживаемых приложений, которые могут обрабатывать это намерение. Но при этом не отображаются параметры Facebook и SMS / MMS.

Вот мой код..

 public void shareWithFriends(int resId)
{
    Intent share = new Intent(Intent.ACTION_SEND);
    share.setType("audio/mp3");
    share.putExtra(Intent.EXTRA_SUBJECT,"Ringtone File : "  getResources().getResourceEntryName(resId) ".mp3");
    share.putExtra(Intent.EXTRA_TEXT,"Ringtone File : " getResources().getResourceEntryName(resId) ".mp3");
    share.putExtra(Intent.EXTRA_STREAM,Uri.parse("android.resource://com.my.android.soundfiles/" resId));
    share.putExtra("sms_body","Ringtone File : "  getResources().getResourceEntryName(resId) ".mp3");
    startActivity(Intent.createChooser(share, "Share Sound File"));
}
 

Вот некоторые результаты:

  1. Когда я использую MIME-тип audio/mp3 , отображаются только параметры электронной почты. Нет общего доступа к Facebook и SMS / MMS.
  2. Когда я использую MIME-тип */* , появляются параметры электронной почты и SMS. Опция Facebook отсутствует.

Здесь интересно отметить, что когда я нажимаю на опцию SMS, появляется только текст. Я не вижу прикрепленных файлов MP3 (то же самое происходит в Whatsapp (поскольку у меня установлен Whatsapp на моем телефоне). Однако, когда я нажимаю на любое почтовое приложение (например, Gmail или Yahoo mail), оно показывает мне прикрепленный MP3-файл.

Где я ошибаюсь?

Ответ №1:

Для Facebook нет опции, но вы можете поделиться электронной почтой и MMS с помощью Bluetooth. Вот мой код. Посмотрите, поможет ли это вам:

 Intent share = new Intent(Intent.ACTION_SEND);
share.setType("audio/*");
share.putExtra(Intent.EXTRA_STREAM,Uri.parse("file:///" mypath));
startActivity(Intent.createChooser(share, "Share Sound File"));
break;
 

Здесь мой путь — это путь к звуковому файлу на SD-карте.

Комментарии:

1. не используйте фиксированный путь .. используйте getExternalStorageDirectory(); вместо «file:///» mypath …

2. Uri.parse(«file: /// необходим для совместного использования …..да, getExternalStorageDirectory() можно использовать для получения путей к файлу

3. Моя ошибка: «файл неизвестен, файл не отправлен». Я пытался отправить с помощью bluletooth

Ответ №2:

Вы пытаетесь поделиться mp3 через службы, которые его не поддерживают.

  • Facebook поддерживает текст, изображения и видео.
  • SMS — это обычный текст (и только очень короткий обычный текст)
  • MMS поддерживает аудио, но (насколько я могу судить по наблюдениям (т. Е. Без чтения спецификации)) Только аудио с очень низкой скоростью передачи в некотором формате, который обычно поставляется в файле с расширением .3g

Приложения не отображаются в списке поддерживаемых приложений для mp3, поскольку они не поддерживаются.

Комментарии:

1. Спасибо за очень быстрый ответ. Таким образом, конечный результат будет выглядеть так: «я не могу поделиться своим аудиофайлом с Facebook».

2. Не используя их стандартный интерфейс. Это может сделать возможным переход через приложение. Вероятно, стоит изучить AudioBoo.

3. Я вижу опцию Whatsapp, но когда я выбираю это приложение, оно не прикрепляет мой аудиофайл. Что может быть причиной этого. Однако, когда я выбираю любое почтовое приложение. (Gmail или YahooMail), я вижу прикрепленный файл и снова вижу, что почта отправляется с необходимыми вложениями.

Ответ №3:

 File f=new File("full audio path");
Uri uri = Uri.parse("file://" f.getAbsolutePath());
Intent share = new Intent(Intent.ACTION_SEND);
share.putExtra(Intent.EXTRA_STREAM, uri);
share.setType("audio/*");
share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(Intent.createChooser(share, "Share audio File"));
 

Ответ №4:

 Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
        sharingIntent.setType("audio/*");
        sharingIntent.putExtra(android.content.Intent.EXTRA_STREAM,
                Uri.fromFile(new File("filepath")));            
        startActivity(Intent.createChooser(sharingIntent,"Share using"));
 

Ответ №5:

Попробуйте это.

  final Intent sendIntent  = new Intent(Intent.ACTION_SEND);
            sendIntent.putExtra("sms_body", "bod of sms");
            sendIntent.setType("*/*");
            sendIntent.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity");
            final File file1 = new File(Environment.getExternalStorageDirectory().getAbsolutePath(),"test.amr");
            Uri uri = Uri.fromFile(file1);
            Log.e("Path", ""   uri);
            sendIntent.putExtra(Intent.EXTRA_STREAM, uri);
            startActivity(Intent.createChooser(sendIntent, ""));
 

Ответ №6:

Используйте следующий код, который работает для меня, чтобы делиться аудио с помощью intent.

 String path = Environment.getExternalStorageDirectory()
                .getAbsolutePath()   "/abc.mp3";


        Intent share = new Intent(Intent.ACTION_SEND);
        share.setType("audio/*");
        share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///"   path));
        startActivity(Intent.createChooser(share, "Share Sound File"));
 

Ответ №7:

 String sharePath = Environment.getExternalStorageDirectory().getPath()
      "/Soundboard/Ringtones/custom_ringtone.ogg";
Uri uri = Uri.parse(sharePath);
Intent share = new Intent(Intent.ACTION_SEND);share.setType("audio/*");
share.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(share, "Share Sound File"));