即时尝试删除某些所选号码的通话记录,代码将在模拟器和其他两个设备(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上工作
答案 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
,必须在清单中明确请求此权限。