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