2011-09-19 22 views
4

我需要將sms存儲到sqlite數據庫,當我收到一個。在這一刻,它可以正常工作(短信160個字符),但是如果我收到多部分短信,它會截斷短信約155個字符。BroadcastReceiver多部分短信

這是我的代碼:

SmsBR.java

public class SmsBR extends BroadcastReceiver { 
    private DBManager dbm; 
     @Override 
     public void onReceive(Context context, Intent intent) { 
        Bundle bundle = intent.getExtras(); 
        if (bundle != null) { 
         Object[] pdus = (Object[])bundle.get("pdus"); 
         final SmsMessage[] messages = new SmsMessage[pdus.length]; 
         for (int i = 0; i < pdus.length; i++) { 
          messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
         } 
         if (messages.length > 0) { 
          dbm=DBManager.getDBM(null); 
          dbm.insertSMS(messages[0]); 
                }}}} 

DBManager是我寫的,以簡化讀/寫操作一個單獨的類,我敢肯定它有沒有問題長文本!

回答

7

根據幾個應用程序,看起來多部分SMS是以相同的意圖接收的,並且它們由消息數組表示。

所以基本上,您檢索完整的消息:

StringBuffer content = new StringBuffer(); 
for (Message sms : messages) { 
    content.append(sms.getDisplayMessageBody()); 
} 
String mySmsText = content.toString(); 

據我所知,似乎消息是正確的順序。無論如何,我不知道任何方式來檢索郵件標題(除了自己解析pdu)。

+0

謝謝! :)問題是,我只存儲'消息[0]'! – supergiox

0

當考慮到多部分SMS的用戶數據標題時,155個字符聽起來像用戶數據的長度。換句話說,這聽起來不像這裏有問題 - PDU正在正確存儲。您將需要收集SMS的其他PDU以顯示/存儲完整的內容。