Как принудительно обновить столбец CallLog.Calls.CACHED_NAME? - PullRequest
2 голосов
/ 30 сентября 2010

Моя цель - собрать все неизвестные номера телефонов из журнала вызовов.Это может быть достигнуто с помощью следующего кода:

private static final String[] CALLOG_PROJECTION = {CallLog.Calls._ID,
        CallLog.Calls.CACHED_NAME, CallLog.Calls.NUMBER};
private static final String CALLOG_WHERE = CallLog.Calls.CACHED_NAME + " is null";

Cursor c = getContentResolver().query(CallLog.Calls.CONTENT_URI, CALLOG_PROJECTION,
        CALLOG_WHERE, null, CallLog.Calls.DATE + " DESC");

Это работает хорошо, но после того, как я создал контакт с неизвестным номером, результат запроса все еще содержит неизвестное число.

Если я открою окно активности Журнала вызовов, я увижу, как номер меняется на имя контакта в течение нескольких секунд.Таким образом, действие обновляет столбец CACHED_NAME.

Мой вопрос: как я могу программно обновить (актуализировать) журнал вызовов?

1 Ответ

6 голосов
/ 06 января 2011

Я попал на этот вопрос в поисках способов оптимизировать то, что вы пытаетесь сделать.Вместо использования cached_name я запрашивал у провайдера контента Phone для каждого номера фактическое имя, но это приводило к проблемам с производительностью.

Я заметил, что стандартное приложение обновляет список при изменении, как вы это делали.

Я собираюсь реализовать ContentObserver в таблице телефонов и обновлю свое имя, когда это произойдет, я опубликую, если это будет работать.


РЕДАКТИРОВАТЬ

Я проверял (101) * исходный код приложения Контакты (Google), и они в основном отображают список с CACHED_NAME сначала и после отображения списка проверяют (на фоне), были ли какие-либо изменения вконтактные данные.Если они были, они обновляют запись CallLog и список.

По сути, я реализовал нечто подобное, и это работает.Были некоторые проблемы с производительностью, когда вы прокручивали список, когда он проверял изменения на фоне, потому что в CallLog много повторяющихся чисел.Так что в основном вам просто нужно проверить, проверяются ли эти номера.

Надеюсь, это поможет!

...