强制android选择一个电子邮件发送应用程序

时间:2012-06-12 11:42:47

标签: android email android-intent

我实施了从我的应用程序发送电子邮件。

我使用this quesion on SO作为指导来实现这一点,请注意,在答案中有人说使用setType("message/rfc822");因为它会过滤掉所有其他听取ACTION_SEND意图的电子邮件客户端。

我的问题是我的galaxy tab 10.1仍然有两个应用程序可以听取意图,因此弹出窗口仍会打开,询问我想要使用哪个电子邮件客户端。 (gMail应用程序或默认的eMail应用程序)。我无法卸载,因此列表不会弹出,但我也不想。

有没有办法强制Android立即使用列表中的第一个?那么用户可以跳过弹出对话框吗?

这是我目前的代码:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");

i.putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.notes_from_pf));
i.putExtra(Intent.EXTRA_TEXT  , context.getString(R.string.mail_message));
try {
    startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(context, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}

3 个答案:

答案 0 :(得分:1)

查询应用程序,获取注册为发送操作的应用程序列表,然后选择一个,创建意图,设置类名并启动您的意图并完成

答案 1 :(得分:0)

如果您希望找到哪些应用可以处理意图,您可以使用:

getPackageManager()。queryIntentActivities ...

当您找到所需的应用时,请设置意图的包以匹配该应用。

答案 2 :(得分:0)

Intent email = new Intent(Intent.ACTION_SEND);
email.setType("text/plain");
email.putExtra(Intent.EXTRA_EMAIL,  "" );

email.putExtra(Intent.EXTRA_SUBJECT, "");

email.putExtra(Intent.EXTRA_TEXT, prsnname + " :   "+ data  +"\n\n" +  linkdata);


try
{

activity.startActivity(Intent.createChooser(email, "Send mail..."));

}
catch (android.content.ActivityNotFoundException ex) 
{
    Toast.makeText(activity, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}