電話のアドレス帳にある連絡先をアプリに正確に表示する際に問題があります。
Googleの連絡先アプリから、さまざまなバージョンを見つけました.これらの連絡先を照会する方法:
選択を使用しない
Uri uri = ContactsContract.CONTACT.CONTENT_URI; getActivity().getContentResolver().query(uri,PROJECTION, null, null, null);
可視グループ == 1 の連絡先のみを使用
Uri uri = ContactsContract.CONTACT.CONTENT_URI; String selection = Contacts.IN_VISIBLE_GROUP + "=1" getActivity().getContentResolver().query(uri,PROJECTION, selection, null, null);
または、ディレクトリクエリパラメーターを使用するには
Uri uri = Contacts.CONTENT_URI.buildUpon().appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT)).build(); getActivity().getContentResolver().query(uri, PROJECTION, null, null, null);
最後のクエリは最高の結果をもたらしますが、本当に満足できるクエリはありません! :(これらすべてをさまざまなデバイスでテストしましたが、電話帳の連絡先の正確な数を取得することはできませんでした.
なぜすべてのデバイスに対してクエリが機能しないのか、誰かに考えがありますか?
私のテストの結果は次のとおりです。
================================================== ===============
| | デバイス \ 選択 | 電話帳| いいえ (1) | 可視グループ (2) | Directory.Default (3) |
================================================== ===============
| | ギャラクシー S | 288 | 302 | 288 | 288 |
| | ネクサス 4 | 61 | 196 | 60 | 61 |
| | Xperia ゴー | 32 | 46 | 32 | 33 |
| | ネクサス5 | 109 | 168 | 108 | 109 |
| | ギャラクシー S3 | 124 | 124 | 2 | 124 |
| | Xperia Z | 157 | 254 | 156 | 180 |
================================================== ===============