【问题标题】:delete call logs not working on HTC删除在 HTC 上不起作用的通话记录
【发布时间】:2015-06-03 03:04:57
【问题描述】:

我正在尝试删除某些选定号码的通话记录,代码将在模拟器和其他两个设备(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 one 上工作

【问题讨论】:

  • 您在查询 url 时看到一些结果吗?有没有过滤器?
  • @flx 没有过滤器我没有测试,而过滤器我看到通话记录被删除了
  • “它不能在 HTC one 上工作”——这不是对您症状的有用描述。你在崩溃吗?如果是这样,请发布堆栈跟踪。另外,为什么要硬编码Uri,而不是使用CallLog 中的CONTENT_URI(因为HTC 可能已经移动了它)?另外,由于没有要求调用日志由 SQL 数据库支持,是什么让您认为LIKE 将是一个可靠的选择?
  • @CommonsWare 我同时使用了硬编码和 CONTENT_URI 都有相同的结果,而我检查了它也由 sql 数据库支持
  • 那么,你是说你闯入了每个 Android 设备制造商的办公室,检查了他们对 Android 的更改,看看他们是如何处理通话记录的?毕竟,欢迎他们更改呼叫日志的实现,就像他们更改主屏幕的实现一样。

标签: java android android-contentprovider


【解决方案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 你可以解决你的问题。

【讨论】:

  • 要删除所有通话记录,您应该关注Uri call_uri = Uri.parse("content://call_log/calls"); int delete = getContentResolver().delete(uri, null, null);
【解决方案2】:

试试这个

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

【讨论】:

    【解决方案3】:

    我发现了错误:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多