在Android中发送短信意图

时间:2011-02-16 07:27:37

标签: android android-intent sms android-implicit-intent

String x="Hello World";
String y="You Rock!!!";
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", x); 
sendIntent.putExtra("sms_body", y); 
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);

我正在尝试通过短信发送多个邮件正文,但只有“你摇滚!!!”被展示。我想要做的是能够显示多条消息并预先格式化(在不同的行上)。

所以例如......

Hello World
You Rock!!!

2 个答案:

答案 0 :(得分:6)

如果要发送多行消息,只需在两个字符串之间添加换行符。

x + "\n" + y

如果想要发送多条消息,我无法做到这一点,我知道。您可以使用[startActivityForResult] [1]然后在您的活动[onActivityResult] [2]方法中发送下一条消息。

[1]:http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent,int)

[2]: http://developer.android.com/reference/android/app/Activity.html#onActivityResult(int,int,android.content.Intent)

答案 1 :(得分:3)

问题在于你覆盖扩展数据,因为putExtra没有将你在Bundle参数(第二个)中编写的所有内容添加到列表中,而是重置其内容。这就是为什么你只能看到最后一部分,因为你首先将额外的名为“sms_body”设置为“Hello World”,然后将其重置为“You Rock !!!”。

我没有尝试过,但是如果你这样做的话,它可以工作:

String smsBody="Hello World\nYou Rock!!!";
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", smsBody); 
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);

字符\ n是换行符(http://en.wikipedia.org/wiki/Newline)的特殊字符,这意味着您将该字符串写成两行(将它们拆分到\ n是的位置)。 \ n几乎存在于每个String表示中,所以它也可以在这里工作。试一试并告诉我们。

顺便说一句,作为一个建议,尝试为变量(不仅仅是x或y)提供可理解的名称。如果您想重用代码或发现错误,您可能想知道x或y究竟是什么。

祝你好运