2011-10-10 103 views
0

我想通過android應用程序訪問通話記錄。我通過應用程序採取數據和更新數據庫的值,但更新後,我不能得到更新的值在通話清單。如何通過Android應用程序更新通話記錄

代碼下面我想:

Uri allCalls = Uri.parse("content://call_log/calls"); 
    Cursor c = managedQuery(allCalls, null, null, null, null);  

    if (c.moveToFirst()) { 
    do{    
     String callType = ""; 
     switch (Integer.parseInt(c.getString(
      c.getColumnIndex(Calls.TYPE)))) 
     { 
       case 1: callType = "Incoming"; 
       break; 
       case 2: callType = "Outgoing"; 
       break; 
       case 3: callType = "Missed"; 
     } 


      } while (c.moveToNext()); 


    } 

    ContentValues values=new ContentValues(); 
    values.put("name", "Unknown"); 

    int k=getContentResolver().update(allCalls, values,null, null); 

我對於k爲多少更新的行數,但在通話清單我沒有得到更新值的整數值。

編輯: 我能夠插入和刪除呼叫列表值,當我檢查呼叫列表時顯示結果爲插入新行或刪除現有的但當我更新值我可以更新它的返回值作爲更新查詢的結果,當我通過點擊callLog列表檢查時,更新值保持一小部分秒,然後舊值顯示...

我不知道我在哪裏做錯了?請幫我...

+0

@deepa ..你爲什麼不加數字...? – ngesh

+0

看看這篇文章:http://stackoverflow.com/questions/5635874/how-can-i-update-the-contents-of-an-entry-in-the-call-log – spatulamania

+0

@ntc ..我是單獨更新此人的姓名。更新後,當我第一次登錄模擬器時,它顯示更新的名稱爲未知,然後它顯示爲通話列表中的默認名稱。我不知道我是否犯了錯誤..是否必須在更新db值後進行提交? – deepa

回答

1

看到這個問題已經過了一年多了,我不知道你是否還在尋找答案。無論如何,你都想知道答案。

您的代碼是完全正常的,它會更新通話記錄,因爲它應該是。但是因爲你只是改變了名字,所以不太可能堅持下去。呼叫日誌中的名稱字段是一個緩存名稱,如Android Documentation中所示,並且每次查看日誌時可能會刷新。

如果您只是更改名稱,與該號碼關聯的名稱將從聯繫人列表中刷新,這就是爲什麼在日誌中不會看到更新名稱的原因。或者,您將看到更改,直到列表刷新/更新。