通过Facebook,电子邮件和短信/彩信共享音频文件(.mp3)

时间:2011-11-01 07:17:11

标签: android facebook audio facebook-graph-api share

我有一个音频文件(.mp3)和一些与之相关的信息。我想与Facebook,电子邮件,短信/彩信等分享。

我所做的是:当用户点击共享按钮时,它会弹出可以处理此Intent的所有受支持应用程序的列表。但这并未显示Facebook和短信/彩信选项。

这是我的代码..

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和短信/彩信共享。

  2. 当我使用MIME类型*/*时,会弹出电子邮件和短信选项。没有Facebook选项。

  3. 这里有趣的是,当我点击短信选项时,只显示文字。我没有看到任何MP3文件附件(同样的事情发生在 Whatsapp (因为我手机上安装了 Whatsapp )。但是,当我点击任何邮件应用程序时(例如,Gmail或Yahoo邮件)它显示我附带的MP3文件。

    我哪里错了?

7 个答案:

答案 0 :(得分:9)

Facebook没有选项,但您可以通过蓝牙共享电子邮件和彩信。这是我的代码。看看它是否对您有所帮助:

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 card上声音文件的路径。

答案 1 :(得分:2)

您正在尝试通过不支持它的服务共享mp3。

  • Facebook支持文字,图片和视频。
  • SMS是纯文本(只有非常短的纯文本)
  • MMS确实支持音频,但是(据我观察(即没有阅读规范))只有非常低比特率的音频,某种格式通常会出现在扩展名为.3g的文件中

应用程序未显示在受支持的mp3应用列表中,因为不支持

答案 2 :(得分:1)

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"));

答案 3 :(得分:1)

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 :(得分:0)

你试试这个。

 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, ""));

答案 5 :(得分:0)

使用以下代码,我可以通过意图分享音频。

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"));

答案 6 :(得分:0)

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"));