【发布时间】:2011-03-24 13:45:24
【问题描述】:
我希望我的应用与多人共享数据。理想情况下,我希望用户能够选择一个联系人组,并且它会启动与联系人组中的每个人共享该数据的意图,例如打开 Gmail,地址字段填充了该组用户的电子邮件地址。这可以使用ACTION_SENDTO Intent 吗?我什至找不到如何使用它发送给一个人的示例,更不用说多个了。
【问题讨论】:
我希望我的应用与多人共享数据。理想情况下,我希望用户能够选择一个联系人组,并且它会启动与联系人组中的每个人共享该数据的意图,例如打开 Gmail,地址字段填充了该组用户的电子邮件地址。这可以使用ACTION_SENDTO Intent 吗?我什至找不到如何使用它发送给一个人的示例,更不用说多个了。
【问题讨论】:
使用ACTION_SEND 和Intent.EXTRA_EMAIL 不会将应用选择器限制为仅通过电子邮件发送应用。而是使用ACTION_SENDTO,如:
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SENDTO);
emailIntent.setType("message/rfc822");
emailIntent.setData(Uri.parse("mailto:first.mail@gmail.com,second.mail@gmail.com"));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "your subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "email content");
startActivity(Intent.createChooser(emailIntent, "Send email..."));
如示例中所示,您可以通过逗号分隔 Uri 将电子邮件发送给多个收件人。无需从startActivity(..) 中捕获ActivityNotFoundException,因为android 框架会为您处理它并向用户显示适当的消息。
如果你想要html格式的电子邮件,你可以使用:
emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml("<i>my html-formatted text!</i>"));
【讨论】:
希望您在代码中使用了以下语句
emailIntent .putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {"user@example.com"});
它接受字符串数组,你可以在那里传递多个收件人姓名
【讨论】:
您可以使用Intent.ACTION_SEND_MULTIPLE 作为电子邮件启动意图的操作,以便将数据发送给多个收件人。
创建一个电子邮件 ID 列表并将其用于 Intent.EXTRA_EMAIL 键,因为这将包括发送电子邮件表单的 to 字段中电子邮件列表中的所有电子邮件。
这段代码怎么样:
final Intent emailLauncher = new Intent(Intent.ACTION_SEND_MULTIPLE);
emailLauncher.setType("message/rfc822");
emailLauncher.putExtra(Intent.EXTRA_EMAIL, emailList);
emailLauncher.putExtra(Intent.EXTRA_SUBJECT, "check this subject line");
emailLauncher.putExtra(Intent.EXTRA_TEXT, "hey check this message body!");
try{
startActivity(emailLauncher);
}catch(ActivityNotFoundException e){
}
【讨论】: