ANDROID |仅向电子邮件客户发送电子邮件附件

时间:2016-04-25 03:54:49

标签: android android-intent

请在重复之前仔细阅读我的问题。谢谢:))

我想发送附件附件的电子邮件。我使用了 ACTION_SENDTO

代码:

 Intent intent = new Intent(Intent.ACTION_SENDTO);
 intent.setData(Uri.parse("mailto:"));
 intent.putExtra(Intent.EXTRA_EMAIL, new String[]{
          Wrapper.INSTANCE.getSupportEmail()});
 intent.putExtra(Intent.EXTRA_SUBJECT, getResources().getString(resourceTitleId));
 intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + filePath));

 try {
        ctx.startActivity(Intent.createChooser(intent, "Send mail..."));
 } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(ctx, "There are no email clients installed.",
                        Toast.LENGTH_SHORT).show();
 }

它仅显示电子邮件客户端,请参见下图:

test

  

但附件不起作用,除了GMAIL。

我也尝试用 ACTION_SEND

来实现它

CODE:

 Intent intent = new Intent(Intent.ACTION_SEND);
 intent.putExtra(Intent.EXTRA_EMAIL, new String[]{
                    Wrapper.INSTANCE.getSupportEmail()});
 intent.putExtra(Intent.EXTRA_SUBJECT, getResources().getString(resourceTitleId));
 intent.setType("message/rfc822");
 intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + filePath));

它显示了所有支持的应用,请参见下图:

enter image description here

  

但附件是所有电子邮件客户端上的工作文件。

我已阅读许多堆栈溢出答案

intent.setType("message/rfc822");

这将解决我的问题。但事实并非如此。

我希望只显示支持附件的电子邮件客户端。

1 个答案:

答案 0 :(得分:0)

String recepientEmail = ""; // either set to destination email or leave empty

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:" + recepientEmail));
startActivity(intent);

重点是使用ACTION_SENDTO作为操作,使用mailto:作为数据。如果您想让用户指定目标电子邮件,请使用mailto:;如果您自己指定电子邮件,请使用mailto:name@domain.com

建议的方法过滤所有可以发送电子邮件的应用程序(例如默认的电子邮件应用程序或gmail)