Таблица CallLog.Calls
содержит поля для кэширования имен, поскольку это кэшированные имена, они не всегда должны быть истинными и время от времени обновляются.
Большинство приложений Phone / Call-log отображают список вызовов вместе с их кэшированными именами, хранящимися в таблице 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);