9

每次我创建从我的应用程序发送电子邮件的操作时,它都会提示许多选项,包括 QR 客户端...

有没有办法只通过电子邮件客户端强制发送?

发送电子邮件的代码

String rec[] = { owner.email };
i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(android.content.Intent.EXTRA_EMAIL, rec);
i.putExtra(android.content.Intent.EXTRA_SUBJECT, "RE: " + desc);
i.putExtra(android.content.Intent.EXTRA_TEXT,
        "\n\n\nSent from Mojo for Android");
startActivity(i);

当我启动它时会发生什么的屏幕截图 截屏

4

10 回答 10

27

尝试 setTypemessage/rfc822而不是text/plain

于 2012-04-24T08:35:24.193 回答
5
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/html");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
new String[] { "abc@xyz.com" });
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
                    "Subject of the Mail");
emailIntent.putExtra( android.content.Intent.EXTRA_TEXT,
                           "This is my sample Mail");
emailIntent.setType("vnd.android.cursor.dir/email");
startActivity(Intent.createChooser(emailIntent, "Email:"));

否则使用它只会显示邮件客户端,

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
new String[] { "abc@xyz.com" });
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
                    "Subject of the Mail");
emailIntent.putExtra( android.content.Intent.EXTRA_TEXT,
                           "This is my sample Mail");
//emailIntent.setType("vnd.android.cursor.dir/email");
startActivity(Intent.createChooser(emailIntent, "Email:"));
于 2012-04-24T08:35:36.920 回答
4

我认为你应该setType改变

i.setType("message/rfc822") ;
于 2012-04-24T08:35:35.967 回答
4

尽管对于@thepoosh 来说为时已晚,但它可能对未来的提问者有所帮助。经过大量的搜索和测试,我终于找到了一个好的解决方案。感谢开源开发者cketti分享他/她的简洁解决方案。

String mailto = "mailto:bob@example.org" +
    "?cc=" + "alice@example.com" +
    "&subject=" + Uri.encode(subject) +
    "&body=" + Uri.encode(bodyText);

Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.setData(Uri.parse(mailto));

try {
  startActivity(emailIntent);
} catch (ActivityNotFoundException e) {
  //TODO: Handle case where no email app is available
}

是他/她的要点的链接。

于 2020-01-10T22:18:36.910 回答
1

它将显示安装在 android 手机上的所有可用应用程序,这些应用程序可以执行共享或从 webview 向其他人发送链接。喜欢 - Gmail、facebook、imo、whatsapp、messenger 等。

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
String shareLink = webView.getUrl();
intent.putExtra(Intent.EXTRA_TEXT, shareLink);
startActivity(Intent.createChooser(intent, "Share via..."));

但是,当您仅强制打开邮件应用程序时:

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"something@gmail.com"});

try {
    startActivity(Intent.createChooser(intent, "send mail"));
} catch (ActivityNotFoundException ex) {
    Toast.makeText(this, "No mail app found!!!", Toast.LENGTH_SHORT);
} catch (Exception ex) {
    Toast.makeText(this, "Unexpected Error!!!", Toast.LENGTH_SHORT);
}
于 2018-07-23T14:17:45.123 回答
0

只要您使用ACTION_SENDwith type text/plain,它就会显示所有有效选项。但是,如果您愿意,您可以设计自己的对话窗口,通过以编程方式进行过滤,仅显示 Gmail 或其他邮件客户端。

顺便说一句,当您只想使用 Gmail 时,为什么还需要这个窗口?

于 2012-04-24T08:36:07.653 回答
0
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("mailto:?to=email&subject=hello&body=hello%20world"));
startActivity(Intent.createChooser(intent, "Send via..."));

你可以试试这个:::::

于 2012-04-24T08:39:40.617 回答
0
Intent.setType("plain/text");

起初,当我发现这一点时,我立即认为这是一个错误并且它本来就是这样text/plain,但这实际上是仅在应用程序列表中显示电子邮件客户端的正确方法。

试一试,自己看看。

于 2012-09-27T13:22:15.407 回答
0

intent.setPackage("com.google.android.gm");//添加Gmail包强制打开Gmail App

于 2021-04-29T14:42:56.047 回答
-1
String rec[] = { owner.email };
i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822") ;
i.putExtra(android.content.Intent.EXTRA_EMAIL, rec);
i.putExtra(android.content.Intent.EXTRA_SUBJECT, "RE: " + desc);
i.putExtra(android.content.Intent.EXTRA_TEXT,
        "\n\n\nSent from Mojo for Android");
startActivity(i);

试试这个;:::

于 2012-04-24T08:37:38.933 回答