首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制刷新CallLog.Calls.CACHED_NAME列?

如何强制刷新CallLog.Calls.CACHED_NAME列?
EN

Stack Overflow用户
提问于 2010-09-30 16:23:32
回答 1查看 2.7K关注 0票数 2

我的目标是从通话记录中收集所有未知的电话号码。这可以通过以下代码来实现:

代码语言:javascript
复制
private static final String[] CALLOG_PROJECTION = {CallLog.Calls._ID,
        CallLog.Calls.CACHED_NAME, CallLog.Calls.NUMBER};
private static final String CALLOG_WHERE = CallLog.Calls.CACHED_NAME + " is null";

Cursor c = getContentResolver().query(CallLog.Calls.CONTENT_URI, CALLOG_PROJECTION,
        CALLOG_WHERE, null, CallLog.Calls.DATE + " DESC");

这很有效,但在我从未知号码创建联系人后,查询结果仍然包含未知号码。

如果我打开Call Log activity窗口,我可以看到号码在几秒钟内更改为联系人姓名。因此,该活动将刷新CACHED_NAME列。

我的问题是,如何以编程方式刷新(实现)呼叫日志?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-06 19:22:02

我找到了这个问题,寻找优化你正在尝试做的事情的方法。我没有使用cached_name,而是向电话内容提供商查询每个号码以获得实际姓名,但这会导致性能问题。

我注意到,股票应用程序会在发生更改时刷新列表,就像您所做的那样。

我将在Phones表上实现一个ContentObserver,并在发生这种情况时更新我的名字,如果有效,我会发布的。

编辑

我正在检查(谷歌的) Contacts app source code,他们基本上是先用CACHED_NAME显示列表,然后在列表显示后,他们(在后台)检查联系人详细信息是否有任何更改。如果有的话,它们会更新CallLog记录和列表。

基本上,我已经实现了类似的东西,并且它起作用了。因为在CallLog中有很多重复的数字,所以当你滚动列表时,当它在后台检查变化时,会出现一些性能问题。所以基本上你只需要验证这些数字是否已经被检查出来了。

希望它能帮上忙!

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3828930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档