#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"));
}
Вот некоторые результаты:
- Когда я использую MIME-тип
audio/mp3
, отображаются только параметры электронной почты. Нет общего доступа к Facebook и SMS / MMS. - Когда я использую 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"));