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电子邮件意图问题?

如何在 Android 12 的意图中包含电子邮件收件人信息?

Android:除非您添加意图过滤器,否则电子邮件意图 ACTION_SENDTO 不起作用

使用意图发送到发件箱 Android 的电子邮件

Android é 在电子邮件意图中显示为黑色菱形