Есть ли способ получить измененные имена контактов вместо кэшированных имен в CallLogs в программировании Android - PullRequest
1 голос
/ 23 апреля 2019

Я разрабатываю приложение для получения CallLogs. Из CallLogs я получаю кэшированное имя звонящего. Теперь, если я изменю имя человека в списке контактов. это не отражено в CallLogs. Как справиться с этим

1 Ответ

0 голосов
/ 23 апреля 2019

Таблица 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);
...