Изменить историю звонков - PullRequest
0 голосов
/ 17 апреля 2019

Я реализовал приложение контактов и хотел бы, чтобы имена контактов моего приложения отображались в журнале журнала вызовов устройства ( Приложение для телефона ) на случай, если я получу / позвоню на эти номера. Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Таблица 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);
0 голосов
/ 18 апреля 2019

Спасибо @PedroHawk. Я нашел ответ в ссылке , которую вы указали. В частности, я создам Account своего приложения в учетных записях устройства, а затем с помощью SyncAdapter синхронизирую контактные данные из моей веб-службы с ContactsProvider устройства.

...