我正在尝试统计已发送的短消息的数量,当消息超过1条消息的限制时,将其计数为2(或更多)。

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(短信限制),四舍五入到最接近的整数,给出使用的邮件数。代码给出的值太小了,大约是应该值的50倍。

最佳答案

更改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);
}

07-27 15:58