---- Permssions: org.kman.AquaMail.datax.GET_ACCOUNTS org.kman.AquaMail.datax.READ_MESSAGES org.kman.AquaMail.datax.MESSAGE_ACTIONS --- Account list: content://org.kman.AquaMail.datax.accounts/accounts private static final String[] GET_ACCOUNTS_PROJECTION = { BaseColumns._ID, "DISPLAY_NAME" }; SmartInbox has id 100 Regular accounts have ids starting at 1000 The app sends content resolver notifications on the URI above --- Unread message notifications: Action = org.kman.AquaMail.NEW_NOTIFICATION intent.putExtra( "email_account", (long) smart inbox: 100 regular account: value starting at 1000 ); If only one unread message: intent.putExtra("sender_email_address", (String) senderEmail); intent.putExtra("sender_contact_id", (String) senderLookupKey); intent.putExtra("unread_count", (int) unreadCount); When a notification is cleared: Brodadcast with action = org.kman.AquaMail.CLEARED_NOTIFICATION intent.putExtra( "email_account", smart inbox: 100 regular account: value starting at 1000 ); --- Message data. For the smart list: "content://org.kman.AquaMail.datax.messages/smart/unread" For an account: "content://org.kman.AquaMail.datax.messages/account//unread" provide access to unread messages. The supported columns are: BaseColumns._ID = "_id" public static final String READ_MESSAGE_HEADER_SUBJECT = "header_subject"; public static final String READ_MESSAGE_HEADER_FROM = "header_from"; public static final String READ_MESSAGE_HEADER_TO = "header_to"; public static final String READ_MESSAGE_HEADER_CC = "header_cc"; public static final String READ_MESSAGE_HEADER_WHEN = "header_when"; public static final String READ_MESSAGE_PREVIEW = "preview"; public static final String READ_MESSAGE_BODY_TEXT = "body_text"; public static final String READ_MESSAGE_VIEW_URI = "view_uri"; public static final String READ_MESSAGE_HAS_ATTACHMENTS = "has_attachments"; public static final String READ_MESSAGE_IS_UNREAD = "is_unread"; "preview" is a short (up to 200 chars, IIRC) extract from message body. "body_text" is always plain text, even for HTML messages (and has HTML tags removed). The "view_uri" will let you open this specific message using Intent.ACTION_VIEW. --- Message actions: Action = "org.kman.AquaMail.datax.MESSAGE_ACTION_DELETE" Action = "org.kman.AquaMail.datax.MESSAGE_ACTION_MARK_READ" intent.setData: view_uri from above