Adding a "Photo" directory under Contacts.
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index 5600916..951764b 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -124,6 +124,8 @@
private static final int CONTACTS_SUMMARY_STREQUENT = 1007;
private static final int CONTACTS_SUMMARY_STREQUENT_FILTER = 1008;
private static final int CONTACTS_SUMMARY_GROUP = 1009;
+ private static final int CONTACTS_PHOTO = 1010;
+ private static final int CONTACTS_SUMMARY_PHOTO = 1011;
private static final int RAW_CONTACTS = 2002;
private static final int RAW_CONTACTS_ID = 2003;
@@ -343,6 +345,10 @@
matcher.addURI(ContactsContract.AUTHORITY, "contacts", CONTACTS);
matcher.addURI(ContactsContract.AUTHORITY, "contacts/#", CONTACTS_ID);
matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/data", CONTACTS_DATA);
+ matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/suggestions",
+ AGGREGATION_SUGGESTIONS);
+ matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/photo", CONTACTS_PHOTO);
+
matcher.addURI(ContactsContract.AUTHORITY, "contacts_summary", CONTACTS_SUMMARY);
matcher.addURI(ContactsContract.AUTHORITY, "contacts_summary/#", CONTACTS_SUMMARY_ID);
matcher.addURI(ContactsContract.AUTHORITY, "contacts_summary/filter/*",
@@ -353,8 +359,9 @@
CONTACTS_SUMMARY_STREQUENT_FILTER);
matcher.addURI(ContactsContract.AUTHORITY, "contacts_summary/group/*",
CONTACTS_SUMMARY_GROUP);
- matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/suggestions",
- AGGREGATION_SUGGESTIONS);
+ matcher.addURI(ContactsContract.AUTHORITY, "contacts_summary/#/photo",
+ CONTACTS_SUMMARY_PHOTO);
+
matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts", RAW_CONTACTS);
matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#", RAW_CONTACTS_ID);
matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#/data", RAW_CONTACTS_DATA);
@@ -2231,6 +2238,18 @@
break;
}
+ case CONTACTS_PHOTO:
+ case CONTACTS_SUMMARY_PHOTO: {
+ long contactId = Long.parseLong(uri.getPathSegments().get(1));
+
+ qb.setTables(mOpenHelper.getDataView());
+ qb.setProjectionMap(sDataProjectionMap);
+ appendAccountFromParameter(qb, uri);
+ qb.appendWhere(" AND " + RawContacts.CONTACT_ID + "=" + contactId);
+ qb.appendWhere(" AND " + Data._ID + "=" + Contacts.PHOTO_ID);
+ break;
+ }
+
case PHONES: {
qb.setTables(mOpenHelper.getDataView());
qb.setProjectionMap(sDataProjectionMap);
diff --git a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
index f882339..a55b182 100644
--- a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
@@ -39,6 +39,7 @@
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.provider.ContactsContract.Contacts.Photo;
import android.test.suitebuilder.annotation.LargeTest;
/**
@@ -856,10 +857,11 @@
insertStructuredName(rawContactId, "John", "Doe");
Uri photoUri = insertPhoto(rawContactId);
- Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI,
- queryContactId(rawContactId));
+ Uri twigUri = Uri.withAppendedPath(ContentUris.withAppendedId(Contacts.CONTENT_URI,
+ queryContactId(rawContactId)), Photo.CONTENT_DIRECTORY);
- assertEquals(photoUri, Contacts.getPhotoUri(mResolver, contactUri));
+ long twigId = Long.parseLong(getStoredValue(twigUri, Data._ID));
+ assertEquals(ContentUris.parseId(photoUri), twigId);
}
private long createContact(ContentValues values, String firstName, String givenName,