1

我试图删除一些选定号码的通话记录,代码将在模拟器和其他两台设备(Q-Mobile A500 和索尼爱立信 X10i)上成功运行并获得所需的结果,我可以在 HTC 上进行客户端测试时进行测试,但它无法正常工作

这是我的代码

    String num, queryString = null;

    number = number.replace(" ", "");
    number = number.replace("-", "");
    if (number.length() > 10) {
        num = number.substring(number.length() - 10, number.length());
        queryString = " LIKE '%" + num + "%'";
    } else {
        queryString = "=" + number;
    }

    // String queryString = "NUMBER=" + number;

    Uri allCalls = Uri.parse("content://call_log/calls");

    context.getContentResolver().delete(allCalls,
            android.provider.CallLog.Calls.NUMBER + queryString, null);

     context.getContentResolver().delete(
     android.provider.CallLog.Calls.CONTENT_URI,
     android.provider.CallLog.Calls.NUMBER + queryString, null);

我试图用两个查询删除结果是相同的,但它不能在 HTC 上工作

4

3 回答 3

1

尝试这个

context.getContentResolver().delete(android.provider.CallLog.Calls.CONTENT_URI,
                android.provider.CallLog.Calls.NUMBER+"=?", new String[] {queryString});
于 2013-09-03T11:56:25.743 回答
1

您应该通过通话 ID 删除通话记录,这可能会有所帮助。

int id = Activity_Name.this.getContentResolver().delete(android.provider.CallLog.Calls.CONTENT_URI,"_ID = "+ calls_id_list.get(i),null);
        if (id == 1) {
            /*delete your call log*/

        } 

可能通过 id 你可以解决你的问题。

于 2013-09-03T12:08:30.487 回答
1

我发现了错误:

在 HTC One 上,需要获得写入通话记录的权限:

<uses-permission android:name="android.permission.WRITE_CALL_LOG" />

当编译为targetSdkVersion15 或更低时,此权限会自动授予,但对于更高的targetSdkVersion权限,必须在清单中明确请求。

于 2013-09-04T05:42:36.383 回答