文档开发者中心
我的

我们是做APP开发的,读取最后来电号码的功能,在升级到 2.0.0.212 后,就不能用了(2.0.0.195以前的版本确定是正常的)

如题,后来再升级了几个版本,还是不行。(2.0.0.195以前的版本确定是正常的)

因为手上只有一个鸿蒙的平板,没有通话通力,又没有华为手机可以测试,所以也不知道有没有什么报错。

已经有三台手机重现出这个问题了。一升级就读取不到最后来电。三台都是我们APP的普通客户的,也不能要求他们把手机寄过来。

代码如下:

收起
自动换行
深色代码主题
复制
Cursor cursor = this.getContentResolver().query(CallLog.Calls.CONTENT_URI, new String[]{CallLog.Calls.NUMBER, CallLog.Calls.DATE}, "type=1", null, "date desc limit 1");
Log.e("SystemHelper", "取得通话记录数量 :" + cursor.getCount());
if (cursor.getCount() > 0) {
   cursor.moveToLast();
   lastCallNumber = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
   try {
      long dateLong = cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE));
      if (dateLong > 0)
         lastCallDate = String.valueOf(dateLong);
   } catch (Exception e) {
   }
}
点赞
收藏
1
回复
3
分享
举报
浏览453 编辑于2021-12-16 08:34未知归属地
全部评论
最多点赞
最新发布
最早发布

找到原因了,应该是规范了SQL大小写了,字段小写,操作语句大写。

phoneCursor = resolver.query(CallLog.Calls.CONTENT_URI, null, "date>= ?", new String[]{Long.toString(today)}, "date DESC");

运行正常。

楼主可以把查询语句改成这样

收起
自动换行
深色代码主题
复制
Cursor cursor = this.getContentResolver().query(CallLog.Calls.CONTENT_URI, new String[]{CallLog.Calls.NUMBER, CallLog.Calls.DATE}, CallLog.Calls.TYPE + "=1", null, CallLog.Calls.DATE+" DESC LIMIT 1");
3楼回复于2021-12-29 05:08 未知归属地

我这边也是,我自己做的查看通话记录的安卓app,一点击就退出。

刚升级鸿蒙系统时是好的,最近不行了。

phoneCursor = resolver.query(CallLog.Calls.CONTENT_URI, null, "DATE >= ?", new String[]{Long.toString(today)}, "DATE desc");

2楼回复于2021-12-28 15:31 未知归属地
欢迎开发小伙伴们进来帮帮楼主
1楼回复于2021-12-16 08:40 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。