現在我使用ACTION_SEND,但有太多的應用程序彈出選擇,所以我想使用ACTION_SENDTO,但我也需要附加幾個文件(.zip或圖像)發送到電子郵件正文,我檢查幾乎所有評論這個網站,幾乎沒有幫助,任何人都可以幫助我嗎?如何選擇與ACTION_SENDTO電子郵件應用程序也支持附件?
回答
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"));
設置數據類型,以便在彈出窗口中看到更少的應用程序。這一點,如果你想分享只有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"));
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"));
因此它支持帶附件的EXTRA_STREAM? –
它將支持EXTRA_STREAM – YUVRAJ
這個答案是有點晚了,但我希望這將有助於那些誰擁有了同樣的問題作爲原海報。
下列溶液將針對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);
- 1. 如何編輯Facebook應用程序支持電子郵件?
- 2. 谷歌應用程序添加附件選項電子郵件
- 3. 在Android中發送電子郵件只選擇電子郵件應用程序並指定附件MIME類型
- 4. 支持Gmail應用程序中的響應電子郵件應用程序IOS
- 5. 電子郵件應用程序多語言支持實施
- 6. 電子郵件支持谷歌應用程序引擎
- 7. j2me /黑莓 - 如何發送電子郵件與附件從應用程序?
- 8. 如何使用asp.net mvc應用程序添加電子郵件支持?
- 9. 如何在android中選擇附件:類似於電子郵件
- 10. 默認的Kindle電子郵件應用程序不在ACTION_SEND和ACTION_SEND的選擇列表中ACTION_SENDTO
- 11. 如何僅使用電子郵件應用程序發送帶附件的電子郵件?
- 12. 電子郵件附件在應用程序中打開?
- 13. 從應用程序發送帶附件的電子郵件
- 14. 從WinForms應用程序發送帶附件的電子郵件?
- 15. 從應用程序發送帶附件的電子郵件
- 16. 將PDF文件附加到應用程序的電子郵件
- 17. 註冊應用程序以閱讀電子郵件附件
- 18. Rails應用程序中電子郵件附件的首選文件位置?
- 19. 應用程序未在Android電子郵件應用程序中打開附件
- 20. 在邏輯應用程序中基於電子郵件ID篩選電子郵件附件
- 21. 如何發送電子郵件與附件中的附件
- 22. 如何將電子郵件附件另存爲電子郵件?
- 23. 電子郵件應用程序組件
- 24. 類型電子郵件不支持選擇範圍
- 25. 如何附加任何文件在電子郵件中的iPhone應用程序
- 26. 如何將電子郵件附加到其他電子郵件?
- 27. 如何使用電子郵件應用程序從我的應用程序發送電子郵件?
- 28. 如何在android上的應用程序中打開電子郵件附件?
- 29. 如何從應用程序發送圖像作爲電子郵件附件?
- 30. 如何從android應用程序發送/打開電子郵件附件?
謝謝,我還需要支持所有主流的Android電子郵件應用...gmail絕對是我的首選, –
根據您的要求更新了答案 –