首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android-9 CallLog: CACHED_NAME和CACHED_PHOTO_URI总是从CallLog返回NULL

在Android-9中,CallLog中的CACHED_NAME和CACHED_PHOTO_URI字段返回NULL的情况可能有以下几种原因:

  1. 权限问题:确保你的应用已经获取了适当的权限来访问CallLog数据。在AndroidManifest.xml文件中添加以下权限声明:
代码语言:txt
复制
<uses-permission android:name="android.permission.READ_CALL_LOG" />
  1. CallLog数据未缓存:CACHED_NAME和CACHED_PHOTO_URI字段是CallLog中的缓存字段,它们只有在通话记录被系统缓存后才会有值。如果通话记录没有被缓存,这两个字段将返回NULL。你可以尝试在通话记录被缓存后再次查询这些字段。
  2. CallLog数据被清除:如果用户清除了通话记录或者系统自动清除了过期的通话记录,CACHED_NAME和CACHED_PHOTO_URI字段将会被清空,返回NULL。
  3. 设备不支持:某些设备可能不支持在CallLog中缓存联系人名称和照片的功能,因此CACHED_NAME和CACHED_PHOTO_URI字段将始终返回NULL。这取决于设备的制造商和Android版本。

针对以上情况,你可以采取以下解决方案:

  1. 确保你的应用已经获取了正确的权限来访问CallLog数据。
  2. 在查询CallLog数据之前,先检查CACHED_NAME和CACHED_PHOTO_URI字段是否为NULL。如果为NULL,可以考虑使用其他方式获取联系人名称和照片,例如通过联系人的电话号码查询联系人数据库。
  3. 如果你的应用对于获取联系人名称和照片非常重要,可以考虑使用Android的联系人提供者(ContentProvider)来获取更可靠的联系人信息。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动开发平台:https://cloud.tencent.com/product/mpp
  • 腾讯云数据库:https://cloud.tencent.com/product/cdb
  • 腾讯云服务器:https://cloud.tencent.com/product/cvm
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网:https://cloud.tencent.com/product/iot
  • 腾讯云存储:https://cloud.tencent.com/product/cos
  • 腾讯云区块链:https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙:https://cloud.tencent.com/product/vr
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

大数据项目之_15_电信客服分析平台_05_数据展示+定时任务+项目总结

true&characterEncoding=UTF-8 jdbc.driverClass=com.mysql.jdbc.Driver applicationContext.xml 用于 Spring ...代码: 1) 新建类:CallLog package com.china.bean; /**  * 封装Mysql中取出来的数据  *  * @author chenmingjun  * 2019-...- 1);         callDurationSumString.deleteCharAt(callDurationSumString.length() - 1);         // 封装返回去的数据..., duration.split(",")),                 max: Math.max.apply(null, duration.split(",")),                 ...module/flume/job/ct/analysis.sh 3) 考虑数据处理手段是否安全   a、定时任务统计结果是否会重复   b、定时任务处理的数据是否全面 四、项目总结 重新总结梳理整个项目流程方法论

1.2K20
  • 安卓开发_深入理解Content Provider

    一、Content Provider概述 Content Provider用于保存获取数据,并使其对所有应用程序可见,这是不同应用程序之间共享数据的唯一方式,因为在Android中没有提供所有应用可以共同访问的公共存储区域...()方法来获得ContentProvider对象 即:ContentResolver cr = getContentProvider(); 3、  不同进程之间的通信由ContentResolver类ContentProvider...、预定义Content Provider 1、  安卓系统提供了很多预定义的Content Provider(声音,联系人,通话记录等) Eg: Browser :读取或修改书签,浏览历史或网络搜索 CallLog...insert() 插入新数据到ContentProvider updata() 更新数据 delete() ContentProvider中删除数据 getType() 返回CntentProvider...updata() 更新数据 delete() ContentProvider中删除数据 getType() 返回CntentProvider数据的MIME

    70640

    大数据项目之_15_电信客服分析平台_03&04_数据分析

    1) 表:db_telecom.tb_call 用于存放【某个查询人维度下】【某个时间维度下】通话次数与通话时长的总和。 ?...答:因为 Mysql 中 sql 语法是不区分大小写的,而 Mysql 有一个优化机制,关键字用小写,表名字段名用小写;关键字用大写,表名字段名用大写;会提高 sql 执行的效率。  ...2、在Mapper这里调用HBase的API去HBase中将名字手机号的映射读出来。         ...strings) throws Exception {         // 得到conf         // 实例化Job         Job job = Job.getInstance(conf, "CALLLOG_ANALYSIS...final int JDBC_DEFAULT_BATCH_NUMBER = 500;     public static final String SCAN_TABLE_NAME = "ns_ct:calllog

    96320

    数据库PostrageSQL-版本和平台兼容性

    对于没有ORDER BY子句的查询来,这样的扫描会在返回行的顺序中造成不可预料的改变。将这个参数设置为off以保证 8.3 之前的行为(顺序扫描总是表的起始处开始)。默认值是on。...平台客户端兼容性 transform_null_equals (boolean) 当打开时,形为expr = NULL(或NULL = expr)的表达式将被当做expr IS NULL, 也就是说...,如果expr得出空值值则返回真,否则返回假。...正确的 SQL 标准兼容的expr = NULL行为总是返回空(未知)。因此这个参数默认为off。...因为expr = NULL形式的表达式总是返回空值(使用 SQL 标准解释)。它们不是非常有用并且在普通应用中也不常见,在应用中也不常见,因此这个选项实际上没有什么危害。

    1.2K20

    更可靠的 React 组件:提纯

    ,并且会产生一个 副作用(side effect) 在函数式编程的术语里,一个 纯函数(pure function) 总是根据某些给定的输入返回相同的输出。...让我们看一个简单的纯函数: function sum(a, b) { return a + b; } sum(5, 10); // => 15 对于给定的两个数字,sum() 函数总是返回同样的相加值...; // => null 即便是使用了同样的参数 'Hello World!',两次的调用返回值也是不同的。就是因为非纯函数依赖了全局状态: 变量 said。...React 组件应该纯函数特性中受益。给定同样的 prop 值,一个纯组件(不要和 React.PureComponent 弄混)总是会渲染同样的元素。...没有副作用,且总是对于给定的相同 temperature windSpeed props 值渲染相同的输出。 纯化版本的 在可预测性简单性方面无疑是很棒的。

    1.1K10

    Java习惯用法总结

    foo.equals(null) 必须返回false,不能抛NullPointerException。(注意,null instanceof 任意类 总是返回false,因此上面的代码可以运行。)...总是实现泛型版本 Comparable 而不是实现原始类型 Comparable 。因为这样可以节省代码量减少不必要的麻烦。 只关心返回结果的正负号(负/零/正),它们的大小不重要。...---- 输入流里读取字节数据 ? read()方法要么返回下一次流里读取的字节数(0到255,包括0255),要么在达到流的末端时返回-1。...输入流里读取块数据 ? 要记住的是,read()方法不一定会填满整个buf,所以你必须在处理逻辑中考虑返回的长度。...当达到流的末端时,BufferedReader.readLine()会返回null。 要一次读取一个字符,使用Reader.read()方法。

    32720

    Java习惯用法总结

    foo.equals(null) 必须返回false,不能抛NullPointerException。(注意,null instanceof 任意类 总是返回false,因此上面的代码可以运行。)...总是实现泛型版本 Comparable 而不是实现原始类型 Comparable 。因为这样可以节省代码量减少不必要的麻烦。 只关心返回结果的正负号(负/零/正),它们的大小不重要。...---- 输入流里读取字节数据 ? read()方法要么返回下一次流里读取的字节数(0到255,包括0255),要么在达到流的末端时返回-1。...输入流里读取块数据 ? 要记住的是,read()方法不一定会填满整个buf,所以你必须在处理逻辑中考虑返回的长度。...当达到流的末端时,BufferedReader.readLine()会返回null。 要一次读取一个字符,使用Reader.read()方法。

    34910

    PDO::setAttribute讲解

    _PDO::ATTR_ORACLENULLS (在所有驱动中都可用,不仅限于Oracle): 转换 NULL 空字符串。 _PDO::NULLNATURAL : 不转换。..._PDO::NULL_EMPTYSTRING : 将空字符串转换成 NULL 。 _PDO::NULL_TOSTRING : 将 NULL 转换成空字符串。..._PDO::ATTR_STATEMENTCLASS : 设置PDOStatement派生的用户提供的语句类。 不能用于持久的PDO实例。...使用此设置强制PDO总是模拟预处理语句(如果为 TRUE ),或试着使用本地预处理语句(如果为 FALSE )。如果驱动不能成功预处理当前查询,它将总是回到模拟预处理语句上。 需要 bool 类型。...返回值 成功时返回 TRUE, 或者在失败时返回 FALSE。 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对ZaLou.Cn的支持。

    72221
    领券