/**
* Copyright 2010 Mark Wyszomierski
*/
package com.joelapenna.foursquared.util;
import android.app.Activity;
import android.database.Cursor;
import android.provider.Contacts;
import android.provider.Contacts.PhonesColumns;
/**
* Implementation of address book functions for sdk levels 3 and 4.
*
* @date February 14, 2010
* @author Mark Wyszomierski (markww@gmail.com), foursquare.
*/
public class AddressBookUtils3and4 extends AddressBookUtils {
public AddressBookUtils3and4() {
}
@Override
public String getAllContactsPhoneNumbers(Activity activity) {
StringBuilder sb = new StringBuilder(1024);
String[] PROJECTION = new String[] {
PhonesColumns.NUMBER
};
Cursor c = activity.managedQuery(Contacts.Phones.CONTENT_URI, PROJECTION, null, null,
Contacts.Phones.DEFAULT_SORT_ORDER);
if (c.moveToFirst()) {
sb.append(c.getString(0));
while (c.moveToNext()) {
sb.append(",");
sb.append(c.getString(0));
}
}
c.close();
return sb.toString();
}
@Override
public String getAllContactsEmailAddresses(Activity activity) {
StringBuilder sb = new StringBuilder(1024);
String[] PROJECTION = new String[] {
Contacts.ContactMethods.DATA
};
Cursor c = activity.managedQuery(
Contacts.ContactMethods.CONTENT_EMAIL_URI,
PROJECTION, null, null,
Contacts.ContactMethods.DEFAULT_SORT_ORDER);
if (c.moveToFirst()) {
sb.append(c.getString(0));
while (c.moveToNext()) {
sb.append(",");
sb.append(c.getString(0));
}
}
c.close();
return sb.toString();
}
@Override
public AddressBookEmailBuilder getAllContactsEmailAddressesInfo(Activity activity) {
String[] PROJECTION = new String[] {
Contacts.PeopleColumns.NAME,
Contacts.ContactMethods.DATA
};
Cursor c = activity.managedQuery(
Contacts.ContactMethods.CONTENT_EMAIL_URI,
PROJECTION, null, null,
Contacts.ContactMethods.DEFAULT_SORT_ORDER);
// We give a list of emails: markww@gmail.com,johndoe@gmail.com,janedoe@gmail.com
// We get back only a list of emails of users that exist on the system (johndoe@gmail.com)
// Iterate over all those returned users, on each iteration, remove from our hashmap.
// Can now use the left over hashmap, which is still in correct order to display invites.
AddressBookEmailBuilder bld = new AddressBookEmailBuilder();
if (c.moveToFirst()) {
bld.addContact(c.getString(0), c.getString(1));
while (c.moveToNext()) {
bld.addContact(c.getString(0), c.getString(1));
}
}
c.close();
return bld;
}
}