2017-04-25 14 views
0

私は誕生日リマインダーアンドロイドアプリを開発しています。私はすべての電話の連絡先を取得し、sqlite(名前、電話、誕生日)に格納します。私のdb(sqlite)を更新するためにアンドロイドネイティブの連絡先に連絡先が変更されているか確認してください

私の質問は、たとえば、連絡先の名前や電話番号が変更されたかどうかを確認できれば、このアップデートをsqliteデータベースに適用することです。

アンドロイドの連絡先にはIDがありますか?ありがとう!

EDIT:今日は誰かの誕生日であれば、自動的にSMSとSMSを送信する列があるので、私は新しいデータベーステーブルに格納する必要があります。

+0

これらの値を複製するのではなく、連絡先のDBを使用していないのはなぜですか?これによりこの問題は解決されます。 – AxelH

+0

こんにちは@AxelH、これらの値を複製する代わりにcontacs BDを使用するとどういう意味ですか?私は彼の/彼女の誕生日が今日である場合、私はそのmsgとのSMSを自動的に送信する列 'msg'を持っているので、連絡先情報をdbに格納する必要があります。 –

+0

私の答えを見て、私の前のコメントについての答えともう少し説明があります – AxelH

答えて

0

ご質問にお答えするには、Contact Providerのドキュメントをご覧ください。

ContactsContract.Contactsテーブルには、連絡先行への「永続的」リンクであるLOOKUP_KEY列もあります。連絡先プロバイダは連絡先を自動的に管理するため、連絡先の行の_ID値が集計または同期に応答して変更されることがあります。この場合でも、連絡先のLOOKUP_KEYと組み合わされたコンテンツURI CONTENT_LOOKUP_URIは連絡先行を指しているので、LOOKUP_KEYを使用して「お気に入り」の連絡先などへのリンクを維持することができます。この列には、_ID列の形式とは関係のない独自の形式があります。

だから、その行IDが同期または凝集の結果として変更された場合は連絡先を検索する方法についてのヒントが含まれている不透明な値は、このLOOKUP_KEYにLOOKUP_KEY

探し。

これは安全に使用する必要があります。


もちろん、送信したいIDとメッセージだけを保存するのは簡単ではないでしょうか。どこに連絡先情報があるかを聞き、今日生まれている連絡先のリストをプロバイダに依頼してメッセージを送信します。このソリューションでは、別個のデータベースに同期する必要はありません。

+0

Tbh、それは連絡先のIDとmsgの代わりにすべての連絡先のデータを格納し、contactsdbからすべての情報を取得するより意味がありますが、そのlookup_keyを見ていきます。ありがとう! –

+0

@ MarkGonzalezどちらの場合でも、このキーが必要ですが、少なくとも更新を常に確認する必要はありません(これらはほとんどありませんので、このチェックはほとんど何もしません)。 – AxelH

+0

ええ、私はcontact_idとlookup_idが必要だと思います。私はcontact_idを使用しますが、lookup_keyはcontact_idの行が変更されたことを教えてくれません。 –

関連する問題