1
我有一个后台服务,用于监听Android SMS内容提供者的更改。我存储了我的服务记录并使用它的最后一条记录的消息ID,我想查找服务停止/终止时发送的消息数量。检索特定时间后发送的短信
因此,当服务再次启动并发送另一条消息时,我想使用最后录制的消息的时间戳。我使用下面的代码来做到这一点。我的问题是,游标始终返回1条记录,无论服务在重新启动前被杀死时发送了多少条消息。
String COLUMN_NAME_DATE = "date"
String[] projection = new String[]{COLUMN_NAME_ID, COLUMN_NAME_DATE};
Cursor newMessagesCursor = mContext.getContentResolver().query(
Uri.parse(SMSManager.SMS_URI_SENT),
projection,
COLUMN_NAME_DATE + "> ? ",
new String[]{String.valueOf(lastMessageTimeStamp)}, null);
int newMessagesCount = (null != newMessagesCursor) ? newMessagesCursor.getCount() : 0;
任何指针都会有帮助。让我知道是否还有其他方法。
编辑:添加代码以检索lastMessageTimeStamp。该类
Cursor messageCursor = mContext.getContentResolver().query(
Uri.parse(SMSManager.SMS_URI_SENT),
projection,
COLUMN_NAME_ID + "= ? ",
new String[]{ lastMessageId}, null);
if(null != messageCursor && messageCursor.moveToFirst()) {
Long lastMessageTimeStamp = Long.parseLong(messageCursor.getString(messageCursor.getColumnIndex(COLUMN_NAME_DATE)));
}
你确定你有合适的时间戳吗?也就是说,如何以及何时得到'lastMessageTimeStamp'?上面的代码运行时你检查过这个值吗?哪一条消息是从该查询中获得的?它总是最近发送的吗? –
我用'lastMessageId'查询SMS表并读取时间戳。也将更新代码。我认为最近的一个信息就是证实这一点。 – midhunhk