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

Reply via email to