删除不在HTC上工作的通话记录

时间:2013-09-03 11:39:04

标签: java android android-contentprovider

即时尝试删除某些所选号码的通话记录,代码将在模拟器和其他两个设备(Q-Mobile A500和Sony Ericson 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上工作

3 个答案:

答案 0 :(得分:1)

试试这个

context.getContentResolver().delete(android.provider.CallLog.Calls.CONTENT_URI,
                android.provider.CallLog.Calls.NUMBER+"=?", new String[] {queryString});

答案 1 :(得分: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来解决您的问题。

答案 2 :(得分:1)

我想出了错误:

在HTC One上,有必要获得对呼叫日志的许可:

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

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