2015-10-13 45 views

回答

0
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE); 
emailIntent.setType("plain/text"); 
ArrayList<Uri> listUri=new ArrayList<Uri>(); 

Uri URI;=Uri.fromFile(new File(filename)); 
listUri.add(URI); 

Uri URI2;=Uri.fromFile(new File(filename2)); 
listUri.add(URI2); 

emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, listUri); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); 
startActivity(Intent.createChooser(emailIntent,"Send")); 
1

設置數據類型,以便在彈出窗口中看到更少的應用程序。這一點,如果你想分享只有Gmail應用,您不必使用ACTION_SENDTO

emailIntent.setType("message/rfc822"); 

使用。

Intent emailIntent = new Intent(Intent.ACTION_SEND); 
    emailIntent.setData(Uri.parse("mailto:"));  
    emailIntent.setType("message/rfc822"); 
    emailIntent.setPackage("com.google.android.gm"); // 
    emailIntent.putExtra(Intent.EXTRA_SUBJECT,subject); 
    emailIntent.putExtra(Intent.EXTRA_TEXT,body); 
    emailIntent.putExtra(Intent.EXTRA_STREAM, fileuri); 
    startActivity(emailIntent); 

編輯: 這將顯示所有主流電子郵件應用:

Intent emailIntent = new Intent(Intent.ACTION_SEND); 
     emailIntent.setData(Uri.parse("mailto:"));  
     emailIntent.setType("message/rfc822"); 
     emailIntent.putExtra(Intent.EXTRA_SUBJECT,subject); 
     emailIntent.putExtra(Intent.EXTRA_TEXT,body); 
     emailIntent.putExtra(Intent.EXTRA_STREAM, fileuri); 
     startActivity(Intent.createChooser(emailIntent,"Send via")); 
+0

謝謝,我還需要支持所有主流的Android電子郵件應用...gmail絕對是我的首選, –

+0

根據您的要求更新了答案 –

0
Try this ,this example for text ,if you want to send media file you just modify this code. 
String strmail=messageToPost; 
     strmail=strmail.replace("<html>", ""); 
     strmail=strmail.replace("<br/>", ""); 
     strmail=strmail.replace("</html>", ""); 
     strmail=strmail.replace("<b>", ""); 
     strmail=strmail.replace("</b>", ""); 
     //   strmail="<html>"+strmail+"</html>"; 
     String[] mailto = { "" }; 
     final Intent sendIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:")); 
     sendIntent.putExtra(Intent.EXTRA_EMAIL, mailto); 
     sendIntent.putExtra(Intent.EXTRA_SUBJECT, 
       "Mail From application"); 

     sendIntent.putExtra(Intent.EXTRA_TEXT,strmail); 
     startActivity(Intent.createChooser(sendIntent, "your app")); 
+0

因此它支持帶附件的EXTRA_STREAM? –

+0

它將支持EXTRA_STREAM – YUVRAJ

0

這個答案是有點晚了,但我希望這將有助於那些誰擁有了同樣的問題作爲原海報。

下列溶液將針對OP的兩個請求(1)選擇性地顯示從該用戶可以選擇和(2)多個文件附加到電子郵件的主體的應用程式。

首先,我們將解決#(2)。這是對Ravi Rupareliya發佈的解決方案的擴展。假設我們需要附加兩個名爲「file01」和「file02」的文件。我們會這樣寫:

ArrayList<Uri> uriList = new ArrayList<Uri>(); 
Uri uri = Uri.fromFile(new File("file01")); 
uriList.add(uri); 
Uri uri02 = Uri.fromFile(new File("file02")); 
uriList.add(uri02); 

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE); 
emailIntent.setType("message/rfc822"); 
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, *"email title"*); 
emailIntent.putExtra(Intent.EXTRA_TEXT, *"email body"*); 

當創建的意圖,利用ACTION_SEND_MULTIPLE的(而不是簡單地ACTION_SEND)表示你要附加到電子郵件多個文件。此外,使用Content-Type「message/rfc822」表示主體包含使用RFC 822標準格式化的封裝消息(即您的「file01」和「file02」附件)。

其次,我們將解決#(1)。我建議您在設置模塊中提供一個選項,允許用戶從電子郵件應用列表中選擇一個電子郵件客戶端。選定的電子郵件客戶端將成爲用戶需要發送電子郵件時啓動的默認電子郵件。該建議要求用戶僅從電子郵件應用列表中選擇一次,而不是每次發送電子郵件。

電子郵件應用列表可以通過被收購:

Intent queryIntent = new Intent(ACTION_SENDTO); 
queryIntent.setData(Uri.parse("mailto:")); 
queryIntent.setType("message/rfc822"); 
List intentList = new ArrayList(); 
PackageManager packageManager = getPackageManager(); 
List resolveInfoList = packageManager.queryIntentActivities(queryIntent, 0); 

for (int i = 0; i < resolveInfoList.size(); i++) { 
    ResolveInfo resolveInfo = (ResolveInfo) resolveInfoList.get(i); 
    String packageName = resolveInfo.activityInfo.packageName; 
    intentList.add(packageName); 
} 

一旦你已經獲得了列表,創建一個模塊,讓用戶選擇電子郵件應用程序的(且因此,的packageName)。

接下來,在#附接碼(1)中,我們只需添加行:emailIntent.setPackage(selectedPackageName);其中selectedPackageName(String)是用戶選擇的電子郵件應用程序。

的全部電子郵件附件代碼如下:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE); 
emailIntent.setType("message/rfc822"); 
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, *"email title"*); 
emailIntent.putExtra(Intent.EXTRA_TEXT, *"email body"*); 
emailIntent.setPackage(selectedPackageName); 
相關問題