2012-02-07 2 views
0

나는 통화 기록을 가져 와서 텍스트 파일에 저장하는 Android 앱을 개발 중입니다. ContentObserver를 사용하여 변경 사항을 관찰하고 변경 사항이 있으면 업데이트 된 항목을 가져옵니다. 부재중 전화, 수신 전화를 받고 전화 번호부에서 전화를 걸어 전화를 걸면 항목을 올바르게 가져올 수 있습니다. 통화 로그에서 번호를 클릭하여 발신 전화를 걸면 onChange() 메소드가 3 번 호출됩니다. 이전 이벤트를 한 번 검색하는 것과 같이 호출하기 전에 통화 로그에서 이름을 선택하면 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.NEW_OUTGOING_CALL

+0

내가 언급 한 링크를 보았습니다. 그래, 내가 전에 방송 수신기를 사용하여, 전화가 유휴 상태로 오면, 내가 전화 로그를 가져 오는 기능을 썼다. 하지만 문제는 내가 IDLE 상태를 두 번 호출하여 두 개의 항목을 만드는 것입니다. 그리고 이것에 대한 해결책이 있다면 전화 상태를 청취하는 브로드 캐스트 리시버를 사용하고 전화 상태가 유휴 상태이면 통화 로그를 가져 오는 서비스를 시작하려고합니다. 이것에 대한 모든 솔루션을 주시면 감사하겠습니다. – vishnu

관련 문제