0

我的应用程序中有一个按钮,应该打开手机的邮件应用程序并添加我保存在字符串中的电子邮件地址。我用这个:

Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{ "mail@mail.com"});
startActivity(email); 

但它使我的应用程序崩溃。请帮忙。

在阅读了下面 Lionel Port 的答案后,我将代码更改为:

 Intent email = new Intent(Intent.ACTION_SEND);
 email.putExtra(Intent.EXTRA_EMAIL, new String[]{ "mail@mail.com"});
 startActivity(Intent.createChooser(email, "Send mail..."));

这并没有使我的应用程序崩溃,但是当 createChooser 显示它说手机没有应用程序来处理此操作时,即使手机有电子邮件应用程序和 gmail。

4

2 回答 2

2

你有两种方法可以做到这一点:

1- ACTION_SEND

Intent intent = new Intent(Intent.ACTION_SEND);  

intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"mail@mail.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, "email subject"); // optional
intent.putExtra(Intent.EXTRA_TEXT, "email body"); // optional
intent.setType("message/rfc822"); // useful define which kind of app to perform the action 

startActivity(Intent.createChooser(intent, "Send Email"));

2- ACTION_SENDTO

Uri uri = Uri.parse("mailto:mail@mail.com");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);

intent.putExtra(Intent.EXTRA_SUBJECT, "email subject"); // optional
intent.putExtra(Intent.EXTRA_TEXT, "email body"); // optional

startActivity(intent);

第一个解决方案将为您提供发送内容的选择,所有应用程序都接受类型格式“message/rfc822”。

第二个将为您提供仅使用设备上存在的电子邮件应用程序(本机电子邮件、Gmail 或其他如果已安装)发送内容的选择。

我更喜欢第二种解决方案。

于 2013-07-31T23:36:32.953 回答
1

您需要检查 logcat 条目以查看导致您的应用程序崩溃的原因。可能正在打开与您期望不同的应用程序来处理 ACTION_SEND 事件。为了确保打开了正确的应用程序,让用户通过强制显示选择器来决定。

startActivity(Intent.createChooser(email, "Send mail..."));
于 2013-07-31T22:56:53.320 回答