2013-04-01 91 views
2

我正在android上創建一個應用程序,用於通話記錄備份和恢復使用csv file.Backup已成功創建,但恢復所有通話記錄不會從csv恢復。這裏是我正在寫的備份代碼在android中的通話記錄還原

while((row = csvReader.readNext()) != null) 
        { 
        RestoreCallLogs(row[0],row[1],row[2],row[3],row[4]); 

        } 



public void RestoreCallLogs(String Name,String number,String Date,String Type,String Duration){ 
     ContentValues values = new ContentValues(); 
     values.put(CallLog.Calls.NUMBER, number); 
     values.put(CallLog.Calls.DATE, Date); 
     values.put(CallLog.Calls.DURATION,Duration); 
     values.put(CallLog.Calls.TYPE, Type); 

     if(Name!="Unknown") 
     values.put(CallLog.Calls.CACHED_NAME, Name); 
     getContentResolver().insert(CallLog.Calls.CONTENT_URI, values); 
    } 

回答

0

你有一個try-catch塊被藏在這裏生成的異常:

RestoreCallLogs(row[0],row[1],row[2],row[3],row[4]); 

不理解它做什麼你不應該使用的try-catch。

要解決:

String[] row; 
while((line = csvReader.readNext()) != null){ 
    row = line.split(","); 
    RestoreCallLogs(row[0],row[1],row[2],row[3],row[4]); 
} 

請閱讀文檔.split()。您需要做額外的工作來處理聯繫人記錄字符串中的逗號和其他非字母數字字符。你還假設csv只包含5列。你能保證嗎?

最後,請使用公認的慣例命名Java中的標識符。使用大寫字母來啓動變量名稱會使您的代碼難以閱讀。

[編輯]

我不知道你的代碼是如何編譯的。請出示rowcsvReader的聲明。

+0

我知道通話記錄表的模式,我只能得到這5條記錄,其次如果將有任何異常,比它去抓塊我已經爲它工作 – Supreet

+0

然後請閱讀我的編輯。 – Simon