2012-02-07 13 views
0

私は通話ログを取得してテキストファイルに保存するアンドロイドアプリを開発しています。 ContentObserverを使用して変更を監視し、変更があったら更新されたエントリをフェッチします。私はミスコール、着信コールを取得し、電話帳から番号をダイヤルして発信コールを行う場合、エントリを正しく取得できます。コールログから番号をクリックして発信通話を行うと、onChange()メソッドが3回呼び出されます。 onChange()は、呼び出しを行う前に前回のイベントを一度取得するなど、呼び出しログから名前を選択すると呼び出されます。呼び出しが行われると、発信イベントは2回取り出され、完全に3つのエントリが作成されます。私に解決策を提案してください。 ありがとう!更新された通話ログを取得してファイルに保存します

答えて

0

どのURIでオブザーバーを登録しましたか?それはandroid.provider.CallLog.Calls.CONTENT_URIですか?そうであれば、onChange()メソッドは1回だけ呼び出されます。

また、コンテンツプロバイダーに依存することはお勧めできません。 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状態が2回呼び出されて2つのエントリが作成されるということです。そして、これに対する解決策があれば、私は電話の状態を聞く放送受信機を使いたいですし、電話状態がIDLEであれば、私は通話記録を取り出すサービスを開始したいと思います。これに対する解決策があれば分かるはずです。 – vishnu

関連する問題