2014-07-14 43 views
2

我是android新手。在恢復我存儲在數據庫中的通話記錄時出現問題。Android通話記錄恢復日期錯誤

我保存通話記錄用下面的代碼:

Cursor managedCursor = cr.query(CallLog.Calls.CONTENT_URI, null, 
           CallLog.Calls.NUMBER + "=?", 
           new String[] {(ActiveUserContacts.get(i).getnumber()) }, 
           null); 
int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); 
int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE); 
int date = managedCursor.getColumnIndex(CallLog.Calls.DATE); 
int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION); 
int name = managedCursor.getColumnIndex(CallLog.Calls.CACHED_NAME); 
int NEW = managedCursor.getColumnIndex(CallLog.Calls.NEW); 

while (managedCursor.moveToNext()) { 
    CallLogsModel Log = new CallLogsModel(Integer.toString(i), 
              managedCursor.getString(type), 
              managedCursor.getString(date), 
              managedCursor.getString(duration), 
              managedCursor.getString(number), 
              managedCursor.getString(name), 
              managedCursor.getString(NEW)); 
    StoreData.addCallLog(UserNAME, Log); 
} 
managedCursor.close(); 

我的代碼還原:

ContentValues values = new ContentValues(); 
values.put(CallLog.Calls.TYPE, PrevContents.get(i).getType()); 
values.put(CallLog.Calls.DATE, PrevContents.get(i).getDate()); 
values.put(CallLog.Calls.DURATION, PrevContents.get(i).getDuration()); 
values.put(CallLog.Calls.NUMBER, PrevContents.get(i).getNumber()); 
values.put(CallLog.Calls.CACHED_NAME, PrevContents.get(i).getName()); 
values.put(CallLog.Calls.NEW, PrevContents.get(i).getNew()); 

getActivity().getContentResolver().insert(CallLog.Calls.CONTENT_URI, values); 

然而,一切,但通話的時間得到恢復。我犯了一個錯誤嗎?

回答

0

您的PrevContents.get(i).getDate()可能不是呼叫日誌的正確格式或正確的格式。插入呼叫日誌(例如,android adding number to Call logs)的記錄中的一些示例使用System.currentTimeMillis()作爲日期,該日期實際上是long類型的。您可能希望在您用於檢索日期的代碼中使用managedCursor.getLong(date),並將其存儲爲長整型。

另一個注意事項:當您查詢通話記錄時,它看起來好像是1條記錄,將它放在遊標中,保存1條記錄,然後對下一條記錄做同樣的事情,並獲取所有記錄通過手動循環所有的通話記錄記錄(我假設這就是'我'的指數)。您不需要這樣做 - 查詢可以獲取所有記錄,然後您可以使用managedCursor.moveToNext()來執行循環。查看http://android2011dev.blogspot.com/2011/08/get-android-phone-call-historylog.html,瞭解如何執行此操作的示例。當你做恢復時,你可能需要一個循環(雖然也可能有一個更簡單的方法來做到這一點)。