Редактирование имен в истории вызовов

#android #android-contacts #android-syncadapter #calllog #android-account

#Android #android-контакты #android-syncadapter #журнал вызовов #android-учетная запись

Вопрос:

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

Комментарии:

1. итак, по сути, вы хотите создать контакт, который будет отображаться в вашем приложении для звонков по умолчанию? Вы проверили контакты-провайдера ?

Ответ №1:

CallLog.Calls Таблица содержит поля для кэширования имен, поскольку это кэшированные имена, ожидается, что они не всегда будут истинными и время от времени обновляются.

Обычно в большинстве приложений для телефона / журнала вызовов, когда вы открываете журнал вызовов, он отображает список вызовов вместе с их кэшированными именами, хранящимися в 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);
 

Ответ №2:

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