Very nice! It's important to clarify, that this code will find a note for a _raw_ contact, but not for an aggregate contact. If the id here is contactId, not rawContactId, then the selection should say ContactsContract.Data.CONTACT_ID + "=?"...
Cheers, - Dmitri On Thu, Nov 5, 2009 at 1:22 PM, jefduncan <[email protected]>wrote: > Hi all, > > This is my first post to this group (any group), but I wanted to share > my experience with the new Contacts API so far. I had a little > application which accessed a contact's notes via > Contacts.People.CONTENT_URI, accessing the NOTES field with > cursor.getString(cursor.getColumnIndex(People.Notes)). Simple enough. > > Then, along comes the new API with it's ContactsContract and > ContactsContract.CommonDataKinds.xxx. Oh my gosh! It took me forever > to figure out how to find the contents of a note. Maybe I'm just > dense! :) As it turns out, a note (along with many other data items) > is stored in the 'data' directory of the contact available through > ContactsContract.Data.CONTENT_URI. The note's mime-type is specified > as ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE, and the > column containing the note is > ContactsContract.CommonDataKinds.Note.NOTE. So, here's how I > constructed my new getNote(long contactId) method: > > private String getNote(long contactId) { > Log.d(LOGGING_TAG, "getNote for contactId: " + contactId); > String rv = null; > String[] projection = new String[] > { ContactsContract.CommonDataKinds.Note.NOTE }; > String whereClause = ContactsContract.Data.RAW_CONTACT_ID + " = ? > AND > " + ContactsContract.Data.MIMETYPE + " = ?"; > String[] whereParams = new String[]{Long.toString(contactId), > ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE}; > Cursor c = getContentResolver().query > (ContactsContract.Data.CONTENT_URI, projection, whereClause, > whereParams, null); > if (c.moveToFirst()) { > rv = c.getString(0); > } > c.close(); > Log.d(LOGGING_TAG, "getNote returning " + rv); > return rv; > } > > There are other, easier means for accessing some of the other 'data' > items (for example, ContactsContract.CommonDataKinds.Phone has it's > own CONTENT_URI), but this was the only way I could find to access a > note. I hope it's helpful to someone else. > > Peace, > Jef > > -- > 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]<android-developers%[email protected]> > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > -- 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

