Really appreciated!!! I tried and worked.
Here is the original query I used for 1.6:
String[] PROJECTS = new String[] { People._ID,
People.DISPLAY_NAME,
People.NAME, People.NUMBER,
People.PRIMARY_EMAIL_ID };
Cursor cursor = getContentResolver().query(People.CONTENT_URI,
PROJECTS, null, null, People.NAME);
startManagingCursor(cursor);
if (cursor == null) {
return;
}
if (!cursor.moveToFirst()) {
cursor.close();
return;
}
int mIdIndex = cursor.getColumnIndex(People._ID);
int mNameIndex = cursor.getColumnIndex(People.DISPLAY_NAME);
int mNumberIndex = cursor.getColumnIndex(People.NUMBER);
int mEmailIdIndex =
cursor.getColumnIndex(People.PRIMARY_EMAIL_ID);
HashMap<Long, Contact> hash = new HashMap<Long, Contact>();
try {
do {
long id = cursor.getLong(mIdIndex);
String name = cursor.getString(mNameIndex);
String phone = cursor.getString(mNumberIndex);
}
}
}
}
-- Henry
On Nov 13, 12:19 pm, Rachel Blackman <[email protected]> wrote:
> On Nov 13, 2009, at 3:33 AM, Jeff Sharkey wrote:
>
> > Could you paste the exact query() that is returning empty for you?
>
> > Since all data is now stored in a single table you should be able to
> > query on Data.CONTENT_URI and filter by Data.MIMETYPE to match the two
> > types you're looking for.
>
> I honestly get the feeling that the new 2.0 contacts API could use better
> documentation. I've had my own little issues to sort out, and a lot of my
> working with the ContactsContract API seems to be writing tiny test programs
> to figure out 'okay, is THIS how this works...? No...? Hrm... okay, how
> about... no, well, that broke everything. Let's rebuild the emulator...'
>
> However, to share with the original poster, here's my best in-the-mail-client
> attempt at a quick bit of 'let's read all the phone numbers and emails for
> each contact.' (I'm sure if I mucked this up, someone else can post a
> corrected one.)
>
> ----
> // Let's walk our address book. I apologize for any typos, since
> this was
> // written in an e-mail client, rather than an editor! Hopefully I
> did
> // get this right...
> //
> Cursor cursor =
> getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
> null, null, null, null);
> while (cursor.moveToNext()) {
> String contactId = cursor.getString(cursor.getColumnIndex(
> ContactsContract.Contacts._ID));
> String hasPhone = cursor.getString(cursor.getColumnIndex(
>
> ContactsContract.Contacts.HAS_PHONE_NUMBER));
>
> if (Boolean.parseBoolean(hasPhone)) {
> // We have a phone number, so let's query this:
>
> Cursor phones = getContentResolver().query(
> ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
> null,
> ContactsContract.CommonDataKinds.Phone.CONTACT_ID
> +" = "+ contactId,
> null, null);
>
> while (phones.moveToNext()) {
> // Get the phone number. If your contact has combined
> several
> // raw contacts, you might get a duplicated number. (I
> think?)
> //
> String phoneNumber = phones.getString(
> phones.getColumnIndex(
>
> ContactsContract.CommonDataKinds.Phone.NUMBER));
>
> [ ... do something with phone number here ... ]
>
> }
> phones.close();
> }
>
> Cursor emails = getContentResolver().query(
> ContactsContract.CommonDataKinds.Email.CONTENT_URI,
> null,
> ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = "
> + contactId,
> null, null);
>
> while (emails.moveToNext()) {
> // Like phone numbers, if your contact has combined several
> // raw contacts, you can get the same e-mail address more than
> // once.
> //
> String emailAddress = emails.getString(
> emails.getColumnIndex(
>
> ContactsContract.CommonDataKinds.CommonDataColumns.DATA));
>
> [ ... do something with the address ... ]
> }
> emails.close();
> }
> cursor.close();
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en