エミュレーターに2つのテスト連絡先を設定しました。
次のクエリを実行しています。両方を選択し、ドメインオブジェクトにデータを入力して、リストに追加する必要があります。したがって、下部の出力は2になるはずですが、5です。これはなぜですか。(cursor.getCount()は2ではなく5です)
whileループの各反復をステップスルーしましたが、同じ連絡先を複数回取得していますがPOSTCODE
、電話番号などの値が異なります。
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Data.CONTENT_URI,
null, null, null, null);
List<MeCercanaContact> contacts = new ArrayList<MeCercanaContact>();
if (cursor.getCount() > 0)
{
while (cursor.moveToNext())
{
MyContact myContact = new MyContact();
String givenName = cursor.getString(cursor.getColumnIndex(
ContactsContract.Contacts.DISPLAY_NAME));
String postcode = cursor.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
myContact.setFirstName(givenName);
myContact.setLastName(postcode);
contacts.add(myContact);
}
}
System.out.println(contacts.size());