Let's brute force your garden-variety Android 2.x Visible Contact ID/Names cursor (via ContactsContract):
Cursor c = getContentResolver().query(
Contacts.CONTENT_URI,
new String[] { Contacts._ID, Contacts.DISPLAY_NAME },
Contacts.IN_VISIBLE_GROUP + " = '1'",
null,
Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"
);
Is there a way to filter this to get contacts that only have at least one email and/or phone number?
I see that I can use Contacts.HAS_PHONE_NUMBER ... but I don't see HAS_EMAIL anywhere. (Tell me this isn't going to get ugly.)