2010-12-17 10 views
2

私はCallLog.Callsコンテンツプロバイダの変更をリッスンするアプリケーションを構築しています。したがって、このコンテンツプロバイダのすべての変更は、アプリケーションのオブザーバに通知し、データが挿入されると変更されます。CallLog.Callsの変更を聞きます

しかし、問題が発生した場合、アプリが実行されていないとき、つまりアプリが実行されていない間に変更されたデータをキャプチャしないときに通知されます。

私の質問は、アプリケーションが実行されていない間に変更されたデータをキャプチャする方法はありますか?たとえば、私は8回の呼び出しを行い、アプリケーションは実行されていないため、8個の新しいデータがCallLog.callsコンテンツプロバイダに追加されています。アプリケーションが起動すると、この8つの新しいデータをキャプチャする方法はありますか?

ありがとうございます!

答えて

1

着信時に発生するIntentがある場合は、BroadcastReceiverを使用してアプリを応答させ、マニフェストにIntentFilterを作成することができます。

それとも、アプリの起動プロバイダを照会...

編集:

ACTION_PHONE_STATE_CHANGEDはあなたが耳を傾け、それがTelephonyManager.CALL_STATE_RINGINGであるかどうかを確認することができますTelephonyManagerの意図です。

+0

実際、私は着信または発信呼び出しで発砲されるContentObserverを持っています。しかし、アプリは実行時にのみ通知を待ち受けます。それを実行していないときに聞いていないので、私が行った呼び出しは、アプリが見逃している、つまり、アプリケーションはデータをキャプチャしません。とった?だから、私はアプリが動いたらチェックしたり聞いたりするかもしれない解決策を探しています。私はプロバイダのサイズを問い合わせて、プロバイダの最後のサイズを持つ変数と現在のサイズを持つ変数を宣言しようとしていました。それは良い解決策ですか? – rogcg

+0

着信コールがない場合に応答できるインテントコールデータベースに新しいローがあるかどうかを確認することができます。 私は確かに着信コールインテントがあります。アプリケーションのマニフェストにレシーバが登録されていて、インテントフィルタがそのインテントを指定している場合は、アプリが起動します。あなたのアプリがバックグラウンドでそれを処理するためのサービスを起動させるにはおそらく最高です。 IntentクラスとTelephonyManagerクラスをチェックして、インテントがあるかどうかを確認します。 – techiServices

+0

私はサービスを実装する必要があると思います。 – rogcg

関連する問題