3

こんにちは私はAndroidの連絡先検索モジュールで働いています。私はクエリの下で実行しています。

cur = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null , null ,null, null);

このクエリから、結果が複数回取得されています。間違っていることがありますかDISTINCT。結果セットが必要です。

私を助けてください。

4

3 に答える 3

2

一部の連絡先のレコードが重複していると思います。したがって、クエリの条件を追加する必要があります

String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '"
                + ("1") + "'";
        String sortOrder = ContactsContract.Contacts.DISPLAY_NAME
                + " COLLATE LOCALIZED ASC";
cur = context.getContentResolver().query(
                ContactsContract.Contacts.CONTENT_URI, projection, selection
                        + " AND " + ContactsContract.Contacts.HAS_PHONE_NUMBER
                        + "=1", null, sortOrder);// this query only return contacts which had phone number and not duplicated
于 2012-11-01T07:52:18.927 に答える
0

このコードを試してみてください

public void getContact() {

    Cursor cur = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    ContentResolver contect_resolver = getContentResolver();

    int size = cur.getCount();
    if (size > 0 && cur != null) {
        for (int i = 0; i < size; i++) {
            cur.moveToPosition(i);


            String id = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID));


            String name = "";

            Cursor phoneCur = contect_resolver.query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                    + " = ?", new String[] { id }, null);

            if (phoneCur.moveToFirst()) {
                name = phoneCur.getString(phoneCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                if (!name.equalsIgnoreCase("")) {

                                            String id1 = phoneCur.getString(phoneCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
                    Cursor emails = getContentResolver()
                            .query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                                    null,
                                    ContactsContract.CommonDataKinds.Email.CONTACT_ID
                                    + " = " + Integer.parseInt(id1),
                                    null, null);
                    emailAddress="";
                    if (emails!=null && emails.getCount() > 0) {
                        emails.moveToFirst();
                        emailAddress = emails
                                .getString(emails
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
                    }
                    emails.close();
                    contact.setEmail(emailAddress);
                    id1 = "";
                    mcontact_arraylist.add(contact);
                }
                phoneCur.close();
            }

        }

        cur.close();
    }
}
于 2012-11-01T06:58:03.513 に答える