我正在尝试统计已发送的短消息的数量,当消息超过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);
}