在android编程中,是否有一种方法可以获取更改的联系人姓名,而不是调用日志中的缓存姓名

在android编程中,是否有一种方法可以获取更改的联系人姓名,而不是调用日志中的缓存姓名,android,android-contacts,telephonymanager,Android,Android Contacts,Telephonymanager,我正在开发一个应用程序来获取通话记录。从调用日志中,我得到了调用方的缓存名称。现在如果我改变联系人名单上的人的名字。它不会反映在调用日志中。如何处理它该表包含用于缓存名称的字段,因为这些字段是缓存的名称,不希望它们总是为真,并且会不时刷新 大多数电话/通话记录应用程序将显示通话列表以及存储在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);
该表包含用于缓存名称的字段,因为这些字段是缓存的名称,所以不希望它们始终为true,并且会不时刷新

大多数电话/通话记录应用程序将显示通话列表以及存储在
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);

谢谢你提供的信息。但是我如何获得更新的名称。从合同中获取信息。如果我必须检查合同中呼叫日志的每个条目,联系人将使其效率低下。联系人从合同API中获取信息时没有其他选择,但您不必对每个呼叫日志条目进行一次查询,您可以一次完成约50部电话的批量查询,通过在(1111222333)中使用类似于
Phone.NUMBER的选项,应该可以非常有效地获取信息。但是我如何获得更新的名称。从合同中获取信息。如果我必须检查合同中呼叫日志的每个条目,联系人将使其效率低下。联系人从合同API中获取信息时没有其他选择,但您不必对每个呼叫日志条目进行一次查询,您可以一次完成约50部电话的批量查询,通过在(1111222333)
中使用类似于
Phone.NUMBER的选项,这应该是相当有效的