Получение подсчета количества отправленных SMS-сообщений - PullRequest
2 голосов
/ 27 декабря 2011

Я пытаюсь подсчитать количество отправленных SMS-сообщений, и когда количество сообщений превышает 1 для одного сообщения, заставьте их считать 2 (или более).4 строки отмечены выше, код работает нормально.Я пытаюсь прочитать тело каждого текста и получить длину, а затем разделить на 160 (предел SMS) и округлить до ближайшего целого числа, давая мне количество использованных сообщений.Код дает слишком маленькое значение, примерно в 50 раз меньше, чем должно быть.

Ответы [ 3 ]

2 голосов
/ 23 апреля 2012

В то время как одно SMS-сообщение может содержать до 160 символов, в сообщении, использующем для отправки несколько SMS-сообщений, в сообщении может содержаться только 153 символа.(Другие символы используются для указания «это sms номер x of 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;

Надеюсь, что поможет.

1 голос
/ 27 декабря 2011

Измените 160 на 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 голосов
/ 27 декабря 2011

Попробуйте ... замените цикл while на

while (c.moveToNext();) 
{

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...