Android:电子邮件和短信的不同意图
Posted
技术标签:
【中文标题】Android:电子邮件和短信的不同意图【英文标题】:Android: Separate intents for email & SMS 【发布时间】:2010-06-28 23:57:16 【问题描述】:我有一个应用程序,它有两个按钮——一个用于电子邮件,一个用于 SMS。根据按下的按钮,我想通过电子邮件或短信发送特定文本。我已经对电子邮件按钮进行了编码,并且工作正常。问题是弹出的对话框提供了电子邮件或消息传递文本的选项。我想把这两者分开,这样当用户按下email时,只有email的选项,当用户按下SMS时,只有Messaging的选项。
这是我尝试过的代码。
private void sendEmail()
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_EMAIL , new String[]"recipient@example.com");
i.putExtra(Intent.EXTRA_SUBJECT, "Subject of the message");
i.putExtra(Intent.EXTRA_TEXT , "Body of the message");
try
startActivity(Intent.createChooser(i, "Send mail..."));
catch (android.content.ActivityNotFoundException ex)
Toast.makeText(this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
基本上,电子邮件和消息传递似乎都有一个意图 Intent.ACTION_SEND。
有什么办法可以分开吗?
【问题讨论】:
【参考方案1】:您可以使用这样的预填充消息启动消息应用程序:
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", "The SMS text");
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);
或者做这样的事情直接发送它,而不显示消息应用程序:
Uri uri = Uri.parse("smsto:0800000123");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", "The SMS text");
startActivity(it);
【讨论】:
我使用了第一个(因为我想启动 SMS 应用程序让用户有机会编辑文本)。效果很好!就像您使用 "vnd.android-dir/mms-sms" 设置 SMS 的 setType 一样,您是否知道仅用于发送电子邮件的字符串?【参考方案2】:仅用于发送电子邮件的字符串是:
email.setType("message/rfc822");
【讨论】:
以上是关于Android:电子邮件和短信的不同意图的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 12 的意图中包含电子邮件收件人信息?