如何以编程方式从android中删除调用日志?

sai*_*sai 11 android calllog

如何从应用程序中删除/删除通话记录.我这样做

 this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,null,null);
Run Code Online (Sandbox Code Playgroud)

它不起作用.

ρяσ*_*я K 18

确保您拥有以下权限Manifest.xml:

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
Run Code Online (Sandbox Code Playgroud)

要删除特定号码的通话记录,请尝试以下方式:

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

  • 你的意思是`<uses-permission android:name ="android.permission.READ_CALL_LOG"/> <uses-permission android:name ="android.permission.WRITE_CALL_LOG"/>`?:) (6认同)

小智 10

现有解决方案不会删除带有0或+前缀的数字.为了适用于所有电话号码,需要将号码放在单引号中,如下所示:

String queryString = "NUMBER='"+numberToDelete+"'";
context.getContentResolver().delete(CallLog.Calls.CONTENT_URI, queryString, null);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


小智 6

接受的答案将删除来自通话记录的特定号码的所有呼叫.如果要删除唯一的单个调用,可以通过将CallLogId传递给该函数并运行此查询来完成.

public void DeleteCallById(String idd) {   
    this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,CallLog.Calls._ID + " = ? ",
            new String[] { String.valueOf(idd) });
    }  
Run Code Online (Sandbox Code Playgroud)


Pra*_*ant 5

<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
Run Code Online (Sandbox Code Playgroud)

您只需要授予此权限即可使用此方法:

this.getContentResolver().delete(CallLog.Calls.CONTENT_URI, null, null);
Run Code Online (Sandbox Code Playgroud)

它非常适合我。我已经在运行 Kitkat 4.4.2 的 Moto-G 和带有 Jelly Bean 4.1 的 Samsung Note 上对其进行了测试。

  • 这也适用于棉花糖。如果有人偶然发现此答案,我只是添加了此评论。 (2认同)