2011-11-01 100 views
3

我有一個音頻文件(.mp3)和一些與之相關的信息。我想分享與Facebook,電子郵件,短信/彩信等。通過Facebook,電子郵件和短信/彩信分享音頻文件(.mp3)

我所做的是:當用戶點擊共享按鈕,它彈出所有支持的應用程序,可以處理這個意圖列表。但是這並沒有顯示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和短信/彩信分享。

  2. 當我使用MIME類型*/*時,彈出電子郵件和短信選項。沒有Facebook選項。

這裏很有意思的是,當我點擊短信選項時,只顯示文本。我沒有看到任何附加MP3文件(同樣的事情發生在WhatsApp的(因爲我有的WhatsApp安裝在我的手機上)。然而,當我點擊任何郵件應用程序(例如,Gmail或Yahoo郵件),它顯示我的MP3文件附件。

我在哪裏去了?

+0

downvoted呢? –

回答

2

你要分享服務上的MP3不支持它。

  • Facebook的支持文本,圖片和視頻。
  • 短信是純文本(只有非常簡短的純文本)
  • MMS確實支持音頻,但是(據我所知,從觀察(即,沒有閱讀規範)),因爲通常是在一個文件中有0.3克擴展一些格式只有非常低的比特率音頻

的應用程序不會在MP3支持的應用程序,因爲他們的列表中顯示出來不支持

+0

感謝您的非常快速的響應。所以最終的結果會像「我不能將我的音頻文件分享到Facebook」。 –

+1

不使用他們的標準接口。通過應用程序可能會使它成爲可能。這可能值得調查AudioBoo。 – Quentin

+0

我看到Whatsapp選項,但是當我選擇該應用程序時,它不會附加我的音頻文件。這可能是什麼原因。但是,當我選擇任何郵件應用程序(Gmail或YahooMail)時,我會看到附加的文件,並且我可以看到郵件隨附必要的附件。 –

8

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

請勿使用固定路徑.. use getExternalStorageDirectory();而不是「file:///」+ mypath ... –

+0

Uri.parse(「文件:///對於共享意圖是必要的..... yes getExternalStorageDirectory()可用於獲取文件的路徑 –

+1

我的錯誤是「文件未知文件未發送」。我試着用bluletooth發送 – vijay

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