2010-11-06 57 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