2012-08-02 209 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); 
相关问题