强制机器人挑选电子邮件发送应用程序(Force android to pick an app for

2019-10-16 20:21发布

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

我用这个quesion上SO为指导,以实现这一目标,注意在回答有人说使用setType("message/rfc822"); 因为它过滤掉所有其他的电子邮件客户端,听ACTION_SEND意图。

我的问题是,我的Galaxy Tab 10.1还拥有两个应用程序,听的意图,所以弹出仍然打开问我想用什么样的电子邮件客户端。 (Gmail应用或默认的电子邮件应用程序)。 我无法卸载一个,这样的列表将不会弹出,但我并不想要么。

有没有办法迫使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();
}

Answer 1:

查询应用,获得其注册以给行动和选择一个,创建一个意图应用程序的列表,设置类的名字,开始你的意图,你就大功告成了



Answer 2:

如果你想找到该应用程序可以处理这个意图,您可以使用:

getPackageManager()。 queryIntentActivities ...

当你发现你想要的应用程序,设置意图相匹配的应用程序的一个的包。



Answer 3:

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();
}


文章来源: Force android to pick an app for email sending