You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 12 TCL设备通话日志查询报错:no such column: verstat

解决Android 12 TCL设备读取通话日志报错no such column: verstat的问题

核心原因

TCL在Android 12的定制ROM中裁剪了通话日志Content Provider的verstat列,但你的代码通过cr.query(CallLog.Calls.CONTENT_URI, null, ...)查询所有列时,系统会自动拼接包含该不存在列的SQL语句,触发SQLite错误。

解决办法

放弃查询所有列的写法,明确指定你需要的字段(日期、号码、通话时长、通话类型)作为投影参数,避免访问厂商移除的系统列:

修改后的代码示例

// 定义需要的目标列数组
String[] projection = {
    CallLog.Calls.DATE,
    CallLog.Calls.NUMBER,
    CallLog.Calls.DURATION,
    CallLog.Calls.TYPE
};

// 执行查询时传入指定的projection参数
Cursor cursor = cr.query(
    CallLog.Calls.CONTENT_URI,
    projection, // 替换原代码中的null
    null, // 按需设置查询条件
    null, // 按需设置条件参数
    null // 按需设置排序规则
);

额外提示

  • 始终明确指定需要的列,既能规避厂商定制ROM的兼容性问题,还能减少内存占用、提升查询效率。
  • 后续若需新增字段,逐个添加到projection数组即可,切勿再次使用null作为投影参数。

内容的提问来源于stack exchange,提问作者Marco Napoletano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 18:52:32