Таблица CallLog.Calls
содержит поля для кэширования имен, поскольку это кэшированные имена, они не всегда должны быть истинными и время от времени обновляются.
Обычно в большинстве приложений Phone / Call-log при открытии журнала вызовов он отображает список вызовов вместе с их кэшированными именами, хранящимися в таблице Calls
, а затем запускает фоновую службу, которая обновляет кэшированные имена,добавление имен к номерам, недавно сохраненным как контакты, или обновление недавно измененных имен.
Так что, если ваше приложение сохранило какой-либо номер из журнала вызовов в качестве контакта, если вы затем запустите приложение журнала вызовов, вы должны увидетьобновленное имя, появляющееся в течение одной или двух секунд.
Если вы хотите сохранить это имя программно в своем коде, вы можете сделать это легко:
String someNumber = "+12125551234";
String aName = "Jane Addams";
int numberType = Phone.TYPE_MOBILE; // see https://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone#column-aliases
final ContentValues values = new ContentValues(2);
values.put(Calls.CACHED_NAME, aName);
values.put(Calls.CACHED_NUMBER_TYPE, numberType);
// 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);