android - 有没有一种方法可以在 android 编程中获取更改的联系人姓名而不是 CallLogs 中的缓存名称
问题描述
我正在开发一个应用程序来获取通话记录。从 CallLogs 我得到呼叫者的缓存名称。现在,如果我更改联系人列表中的人的姓名。它不会反映在呼叫日志中。如何处理
解决方案
该CallLog.Calls
表包含用于缓存名称的字段,因为这些是缓存名称,它们并不总是正确的,并且会不时刷新。
大多数电话/通话记录应用程序将显示通话列表以及存储在Calls
表格中的缓存名称,然后启动后台线程以刷新这些缓存的名称列 - 将名称添加到最近保存为联系人的号码,或更新名称最近发生了变化。
因此,如果您更新了联系人的姓名,然后启动通话记录应用程序,您应该会在一两秒内看到更新后的姓名。
如果您想在代码中以编程方式更新缓存的名称,您可以轻松地做到这一点:
String someNumber = "+12125551234"; // this is format-sensitive, so it must be exactly as it appears in the call-log
String aName = "Jane Addams";
final ContentValues values = new ContentValues(2);
values.put(Calls.CACHED_NAME, aName);
// on Lollipop+ device, you can also set Calls.CACHED_LOOKUP_URI and Calls.CACHED_FORMATTED_NUMBER
getContentResolver().update(Calls.CONTENT_URI, values, Calls.NUMBER + "='" + someNumber + "'", null);
推荐阅读
- c# - 基于 0 到 1 的时间膨胀(减速)及其影响量
- mongodb - Mongodb教程不排序字段{h}
- python - 条件测试无法在 pythonanywhere 和 python 和烧瓶中使用
- python-3.x - 将“null”计数为整数
- assembly - 汇编编程例行题
- database - 如何授予 Redshift 中所有模式的使用权限?
- html - CSS中的悬停半径问题
- .net - 为什么我的应用会突然开始需要 .resources 文件?
- c# - 无法将类型“UnityEngine.Vector3”隐式转换为“bool”
- java - Eclipse / Tomcat / Maven - 重命名 context.xml