ACTION_SEND
ACTION_SEND属于Activity Action,其作用是发送一些数据到其他应用,数据的接收者是未指定的,需要用户手动指定,这里我只关注其用于邮件发送时的相关内容
1.createChooser
ACTION_SEND通常需要用createChooser方法包裹起来,这将会提供给用户一个界面,并指示用户如何操作。
2.setType
使用setType可以指定MIME类型。
3.Intent.EXTRA_EMAIL,Intent.EXTRA_CC,Intent.EXTRA_BCC,Intent.EXTRA_SUBJECT,Intent.EXTRA_TEXT
EXTRA_EMAIL-邮件地址
EXTRA_CC-抄送
EXTRA_EMAIL-密送
EXTRA_EMAIL-主题
EXTRA_TEXT-邮件内容
发送邮件代码
Intent emailIntent = new Intent(Intent.ACTION_SEND);
//👇设置MIME
emailIntent.setType("message/rfc822");
//👇设置邮件接收地址
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"test@test.mail"});
//👇设置邮件抄送地址
emailIntent.putExtra(Intent.EXTRA_CC, new String[]{"test1@test.mail", "test2@test.mail"});
//👇设置邮件密送地址
emailIntent.putExtra(Intent.EXTRA_BCC, new String[]{"test3@test.mail", "tes4@test.mail"});
//👇设置邮件主题
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "测试主题");
//👇设置要默认发送的内容
String text = "测试内容" +
//注意这里使用‘\n’进行换行
"\n" +
"--来自我的" + android.os.Build.MODEL;
emailIntent.putExtra(Intent.EXTRA_TEXT, text);
startActivity(Intent.createChooser(emailIntent, "请选择一个应用来发送邮件(测试)"));
当然,又是后你可能并不希望用户选择应用,可以使用setPackage方法直接指定应用,我使用的是Gmail,可以如下所示直接指定:
emailIntent.setPackage("com.google.android.gm");
ACTION_SENDTO
相比于ACTION_SEND,ACTION_SENDTO直接将数据发送到指定应用
setData
通过URI指定数据的接收者
发送邮件代码
Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
Uri uri = Uri.parse(
"mailto:" +
"test@test.mail" +
"?cc=test1@test.mail,test2@test.mail"+
"&bcc=test3@test.mail,test4@test.mail"+
"&subject=测试主题" +
"&body=测试内容" + "\n" + "--来自我的" + Build.MODEL);
emailIntent.setData(uri);
startActivity(emailIntent);
注意:部分手机在使用ACTION_SENDTO时,没有设置setData方法,而是使用了Intent.EXTRA_EMAIL,Intent.EXTRA_CC,Intent.EXTRA_BCC,Intent.EXTRA_SUBJECT,Intent.EXTRA_TEXT指定主题,抄送,内容等,依然可以传递数据,但这种方法不可取,因为还是有部分手机不会生效
网友评论