我正在编写一个Android应用程序,要求用户通过单击电子邮件收到的链接来确认他们的订阅。为此,我想创建一个快捷方式来打开首选的电子邮件应用程序。以下代码崩溃了我的Gmail应用:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setType("message/rfc822");
startActivity(intent);
是否有另一种解决方案可以解决这个问题?
答案 0 :(得分:1)
更正您的代码: message / rfc822作为MIME类型 - 它没有指示 - 仅显示电子邮件客户端 - 它表示 - 显示支持消息/ rfc822数据的任何内容。这可能包括一些不是电子邮件客户端的应用程序。
根据Android documentation。如果您想确保仅通过电子邮件应用程序(而不是其他文本消息或社交应用程序)处理您的意图,请使用ACTION_SENDTO操作并包含“mailto:”数据方案。例如:
public void composeEmail(String[] addresses, String subject) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL, addresses);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}
答案 1 :(得分:0)
使用此结构为可以执行电子邮件发送的应用创建选择器。
Intent mIntent = new Intent(Intent.ACTION_SEND);
mIntent.setType("text/html");
mIntent.putExtra(...); // if you need extra just add it here
mIntent = Intent.createChooser(mIntent, "Select Email Application...");
startActivity(mIntent);