2012-02-07 3 views
0

Я разрабатываю приложение для Android, которое извлекает журнал вызовов и сохраняет его в текстовом файле. Я использую ContentObserver для наблюдения за изменениями и получения обновленной записи после изменения. Я могу правильно ввести записи, если у меня есть вызов промаха, входящий звонок и исходящий вызов, набрав номер из телефонной книги. Если я делаю исходящий вызов, щелкнув номер из журнала вызовов, метод onChange() называется трижды. OnChange() вызывается после того, как я выберем имя из журнала вызовов, прежде чем совершать вызов, чтобы получить предыдущее событие один раз. После того, как вызов сделан, исходящее событие извлекается дважды, полностью делая три записи. Пожалуйста, предложите мне решение. Спасибо!Получить обновленный журнал вызовов и сохранить его в файле

ответ

0

В котором URI зарегистрировал наблюдателя. Это android.provider.CallLog.Calls.CONTENT_URI? Если это так, метод onChange() будет вызываться только один раз.

Также, полагаясь на поставщиков контента, это не очень хорошая идея. См. http://android-developers.blogspot.com/2010/05/be-careful-with-content-providers.html. Вместо использования наблюдателей контента вы можете попробовать использовать широковещательный приемник с действиями android.intent.action.PHONE_STATE android.intent.action.NEW_OUTGOING_CALL

+0

Я видел ссылку, которую вы упомянули. Да, я пытался использовать широковещательный приемник раньше, когда телефон переходит в состояние IDLE, я написал функцию, которая извлекает журнал вызовов. Но проблема, с которой я столкнулся, заключается в том, что состояние IDLE вызывается дважды, делая две записи. И если для этого есть какое-либо решение, я хочу использовать широковещательный приемник, который слушает состояние телефона, и как только состояние телефона будет IDLE, я хочу запустить службу, которая извлекает журнал вызовов. Любое решение для этого было бы оценено. – vishnu

Смежные вопросы