gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:25:08 33 4
gpt4 key购买 nike

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

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");

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

如果我打开通话记录 Activity 窗口,我可以看到号码在几秒钟内变为联系人姓名。因此,该 Activity 会刷新 CACHED_NAME 列。

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

最佳答案

我着手解决这个问题是为了寻找优化您正在尝试做的事情的方法。我没有使用 cached_name,而是向电话内容提供程序查询每个号码以获取实际名称,但这会导致性能问题。

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

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


编辑

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

基本上,我已经实现了类似的东西并且它有效。当您在后台检查更改时滚动列表时会出现一些性能问题,因为在 CallLog 中有很多重复的号码。所以基本上您只需要验证这些号码是否已经被 checkout 。

希望对您有所帮助!

关于android - 如何强制刷新 CallLog.Calls.CACHED_NAME 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3828930/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com