2010-11-06 85 views
4

我希望能够从收到的短信中提取文本。 我不确定我是应该使用内容提供商还是将短信包含在广播接收机接收的意图中。Android - 从短信中提取文本

我有一个等待短信的广播接收机,并且想检查接收到的信息的内容。

谢谢。

回答

5

您可以在BroadcastReceiver创建从IntentSmsMessage情况如下:

Bundle bundle = intent.getExtras(); 
Object[] pdus = (Object[])bundle.get("pdus"); 
SmsMessage[] messages = new SmsMessage[pdus.length]; 
for (int i = 0; i < pdus.length; i++) { 
    messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
    //messages[i].getMessageBody(); 
} 
+0

非常感谢Josef。这是我正在寻找的。 – madu 2010-11-07 02:31:01

+0

BTW Josef,你为什么注释掉getMessageBody()?我在API中看到我可以使用它,它看起来更容易,因为它返回一个String。 – madu 2010-11-07 02:35:49

+0

我有点困惑,有多少SmsMessages会在一条短信中出现。因为我想使用getOriginatingAddress(),以及在有多个SmsMessage对象时如何调用此函数。谢谢。 – madu 2010-11-07 03:03:34

2

注意,在一个多部分每条短信的长度(连续)短信是不是160个字符,因为他们每个人从一个数据头开始,所以160个字符不是每个SMS的实际大小,而是消息连接起来的字符长度。而且,这个边界取决于消息的编码。

欲了解更多信息,请参阅[链接文本] [1]。这应该是一个评论,而不是一个答案,但在撰写本文时,我的名誉不允许我发表评论。

[1]:http://en.wikipedia.org/wiki/SMS#Message_size消息大小

+0

谢谢你的应用程序。这解释了它。 – madu 2010-11-18 05:22:18