0

私はしばらくの間、この問題へのアプローチに苦労してきました。連絡先が追加されたときに実行されるインテントアクションはありません(私が知る限り)。この問題を解決するための私のオプションは何ですか?

これが私が遊んでいるいくつかのアイデアです:

  1. まず、タイムスタンプ付きのユーザーの場所の記録を保持し、連絡先DBを定期的にスキャンして、タイムスタンプ付きの新しいエントリを自分のDBに追加しました。次に、これらを比較して、適切な一致を見つけようとします。エラーが発生しやすいため、このアプローチは好きではありません。
  2. 最近、Contacts DBのContentObserverを調べていますが、アプリにフォーカスがあるときだけでなく、常に監視されるようにこれを設定する方法がわかりません。おそらくサービスで?ドキュメントは、コンテンツオブザーバーのライフサイクルについて私には明確ではありません。つまり、それを登録したサービス/アクティビティが停止した後に、ドキュメントは停止しますか?

だから本当に私が欲しいのは、私のアプリがデバイスにインストールされているときにユーザーが連絡先を追加する場所と時間を記録するシームレスな方法です。アプリがフォーカス/実行されている必要があるだけでは十分ではありません。

4

1 に答える 1

0

あなたの2番目のアイデアは正しいものです。あなたが正しく推測したように、オブザーバーはサービスに参加している必要があります。onCreate()にオブザーバーを登録します。contentObserverのonChangeでcontentProviderを使用します。共有設定を使用してデータベースを最後に読み取った時刻を維持する必要があります。共有設定に保存された時間後のエントリの変更に注意してください。次に、共有設定の時刻を現在の時刻に更新します。また、onDestroy()でコンテンツオブザーバーの登録を解除します。

于 2013-07-01T07:15:21.727 に答える