Вы не можете вставлять фотографии в сам журнал вызовов;они хранятся в Контакте, который связан с записью в журнале вызовов.См. ContactsContract.Data для получения дополнительной информации о том, как это сделать.
Поскольку устройство HTC не обновляет журнал вызовов с существующей фотографией, оно может быть связано с тем, как HTCSense кеширует записи в журнале вызовов;Я видел похожие проблемы, которые появляются только на устройствах Sense.
Записи журнала вызовов обычно хранятся в таблице calls
в базе данных приложения «Контакты» (/data/data/com.android.providers.contacts/databases/contacts2.db
).По некоторым причинам, кажется, что HTC Sense не обновляет существующие записи журнала вызовов, если контактные данные изменяются, но другие ПЗУ делают.
Например, если я использую HTC EVO LTE со стоковой Sense 5.0 для выполнения вызовадля кого-то, кого я сохранил как «Дженни Смит», в таблице calls
создается запись, которая включает в себя поле name
, в котором хранится Дженни Смит.Если я обновлю ее контактную информацию на «Дженни Джонс» и сделаю ей новый вызов, в таблице calls
будет сохранена новая запись с именем Дженни Джонс, но предыдущая запись не изменится.Фактический экран истории вызовов показывает все вызовы как Дженни Джонс, но сама база данных имеет старое имя.
Другие протестированные мной устройства (включая Nexus 5) обновляют предыдущие записи в таблице calls
, когдаЖурнал вызовов просматривается.Ваше устройство Motorola, вероятно, ведет себя как Nexus 5, обновляя данные по мере необходимости.
Я не волшебник базы данных, но с ними достаточно знаком.С точки зрения структуры базы данных мне кажется странным, что любая контактная информация хранится в этой таблице calls
(она содержит поле raw_contacts_id
, которое связано с тем же полем в таблице contacts
этой базы данных, гдевся фактическая контактная информация сохраняется), но так она реализована.