2011-12-27 50 views
2

我試圖計算髮送的SMS消息的數量,並且當消息超過1條消息的限制時,將它們計爲2(或更多)。獲取已發送的SMS消息的數量

Uri allMessages = Uri.parse("content://sms/sent"); 
Cursor c = getContentResolver().query(allMessages, null, null, null, null); 
int totalMessages = 0; 


while (c.getPosition() < numberRows - 1) 
{ 
    c.moveToNext(); 

    //Problem Code 
    String messageBody = c.getString(c.getColumnIndex("body")); 
    long messageLength = messageBody.length(); 
    double numberOfMessages = messageLength/160; 
    double numberOfMessagesRoundedUp = Math.ceil(numberOfMessages); 
    //Problem Code 


    totalMessages = (int) (totalMessages + numberOfMessagesRoundedUp); 
} 

c.close(); 

除了上面標記的4行代碼,代碼工作正常。我試圖讀取每個文本的正文並獲取長度,然後除以160(SMS限制)並湊到最近的整數,給我使用的消息數量。該代碼給出的值太小,大約比應該少50倍。

+0

有沒有錯誤? – jagsler 2011-12-27 13:23:02

+0

不,它運行良好,並且我沒有試圖將更長的消息計爲2或更多。 – 2011-12-27 13:27:52

+0

將160改爲160.0。看到我的代碼如下。 – jagsler 2011-12-27 13:48:34

回答

1

更改替換while循環160 TOT 160.0拿到點背後的價值,否則它會返回像一個整數。

您也可以使用以下方式更改while循環。

while (c.moveToNext()) 
{ 
    String messageBody = c.getString(c.getColumnIndex("body")); 
    long messageLength = messageBody.length(); 
    double numberOfMessages = messageLength/160.0; 
    double numberOfMessagesRoundedUp = Math.ceil(numberOfMessages); 

    totalMessages = (int) (totalMessages + numberOfMessagesRoundedUp); 
} 
+0

謝謝,這工作。愚蠢的錯誤! – 2011-12-27 14:07:57

0

嘗試了這一點......下面

while (c.moveToNext();) 
{ 

String messageBody = c.getString(c.getColumnIndex("body")); 
long messageLength = messageBody.length(); 
int numberOfMessages =(int)(messageLength/160); 
totalMessages += numberOfMessages+1; 

} 
2

雖然單個SMS最多爲160個字符,但使用多個SMS發送的郵件只能在郵件中放置153個字符。 (另一個字符用於指定「這是短信號x在這種多部分消息的Y」)所以,在僞代碼:

if (numCharsThisMessage <= 160) numSMSthisMessage = 1; 
else numSMSthisMessage = 1 + (numChars-1)/153; // -1 because 0-153 is message 1, 154-307 is next ... 

totalSMSsent += numSMSthisMessage; 

希望有所幫助。

+0

有趣,有道理,但你能提供一個來源?我想在更新我的應用之前查看此信息!謝謝。 – 2012-04-24 11:02:33

+2

好吧,我通過觀看我的手機(HTC渴望)如何確定給定大小的消息需要多少SMS來解決問題。怕我沒有正式的參考資料,模仿手機做什麼似乎是明智的! – 2012-05-10 18:28:45

相關問題