2012-08-02 208 views
5

如何清除android中的整個通話記錄歷史記錄?目前我有這樣的代碼,只能清除特定的通話記錄如何清除Android中的通話記錄歷史記錄?

public void DeleteCallLogByNumber(String number) { 
    String queryString="NUMBER="+number; 
    this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,queryString,null); 
    } 
} 
+1

不理想所以評論不是一個答案,但你總是可以讀取所有呼叫日誌條目,並以這種方式刪除它們...... – Basic 2012-08-02 22:36:02

+0

試試這個? @Rpc(描述= 「刪除從呼叫日誌條目 」) 公共無效deleteAnEntryFromCallLog(字符串數) { 嘗試 { 烏里CALLLOG_URI = Uri.parse(「 內容:// call_log /呼叫」); (CALLLOG_URI,CallLog.Calls.NUMBER +「=?」,new String [] {number}); (例外e) { e.getMessage(); } } – 2012-08-02 22:37:09

+0

@AlexanderWigmore does not work – dythe 2012-08-02 22:45:29

回答

7

我能夠做到這一點,雖然已經有一段時間了。不知道這是否仍然有效。

getContentResolver().delete(android.provider.CallLog.Calls.CONTENT_URI, null, null) ; 

編輯:請注意,我不能肯定用於應用程序的平臺設計者能夠刪除通話記錄See this dev blog post。所以雖然這在技術上有用,但請以此作爲公正的警告,以便它可以在任何時候改變並打破您正在嘗試構建的內容。

2

您無法使用單個API調用刪除所有內容。

但是,您可以通過循環遍歷所有內容逐個刪除它們(如註釋中所述)。要做到這一點,你需要use a Cursor。請記住:該鏈接僅消除了不到60秒的通話時間,因此您必須修改Cursor創建才能刪除所有通話。

另請注意:對於API 11+,您應該使用CursorLoader而不是managedQuery(...)

1

試試這個:

String queryString="DURATION >= 0"; 
this.getContentResolver().delete(android.provider.CallLog.Calls.CONTENT_URI, queryString, null); 
相關問題