From 94c8761dc56c93324f611e4a513aad1ca2164c26 Mon Sep 17 00:00:00 2001 From: Yorke Lee Date: Fri, 18 Jul 2014 18:57:17 -0700 Subject: [PATCH] ContactsContract API changes * Make ContactCounts an interface * Improve clarity of ContactCounts documentation * Add PinnedPositions.undemote method, and hide the method name constant that is only used for the internal implementation Bug: 16403306 Change-Id: If8b5cad779293cb9a3b90e698b13481f79b2351f --- api/current.txt | 66 ++++++++++-- .../android/provider/ContactsContract.java | 102 ++++++++++-------- 2 files changed, 114 insertions(+), 54 deletions(-) diff --git a/api/current.txt b/api/current.txt index dba086c85fbb2..508ce5bd14f1c 100644 --- a/api/current.txt +++ b/api/current.txt @@ -24344,8 +24344,11 @@ package android.provider { public static final class ContactsContract.CommonDataKinds.Callable implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins { ctor public ContactsContract.CommonDataKinds.Callable(); + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final android.net.Uri CONTENT_FILTER_URI; field public static final android.net.Uri CONTENT_URI; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; } protected static abstract interface ContactsContract.CommonDataKinds.CommonColumns implements android.provider.ContactsContract.CommonDataKinds.BaseTypes { @@ -24356,8 +24359,11 @@ package android.provider { public static final class ContactsContract.CommonDataKinds.Contactables implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins { ctor public ContactsContract.CommonDataKinds.Contactables(); + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final android.net.Uri CONTENT_FILTER_URI; field public static final android.net.Uri CONTENT_URI; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String VISIBLE_CONTACTS_ONLY = "visible_contacts_only"; } @@ -24365,12 +24371,15 @@ package android.provider { method public static final java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence); method public static final int getTypeLabelResource(int); field public static final java.lang.String ADDRESS = "data1"; + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final android.net.Uri CONTENT_FILTER_URI; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/email_v2"; field public static final android.net.Uri CONTENT_LOOKUP_URI; field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/email_v2"; field public static final android.net.Uri CONTENT_URI; field public static final java.lang.String DISPLAY_NAME = "data4"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final int TYPE_HOME = 1; // 0x1 field public static final int TYPE_MOBILE = 4; // 0x4 field public static final int TYPE_OTHER = 3; // 0x3 @@ -24380,7 +24389,10 @@ package android.provider { public static final class ContactsContract.CommonDataKinds.Event implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins { method public static final java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence); method public static int getTypeResource(java.lang.Integer); + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_event"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String START_DATE = "data1"; field public static final int TYPE_ANNIVERSARY = 1; // 0x1 field public static final int TYPE_BIRTHDAY = 3; // 0x3 @@ -24388,13 +24400,19 @@ package android.provider { } public static final class ContactsContract.CommonDataKinds.GroupMembership implements android.provider.ContactsContract.DataColumnsWithJoins { + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/group_membership"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String GROUP_ROW_ID = "data1"; field public static final java.lang.String GROUP_SOURCE_ID = "group_sourceid"; } public static final class ContactsContract.CommonDataKinds.Identity implements android.provider.ContactsContract.DataColumnsWithJoins { + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/identity"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String IDENTITY = "data1"; field public static final java.lang.String NAMESPACE = "data2"; } @@ -24404,8 +24422,11 @@ package android.provider { method public static final int getProtocolLabelResource(int); method public static final java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence); method public static final int getTypeLabelResource(int); + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/im"; field public static final java.lang.String CUSTOM_PROTOCOL = "data6"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String PROTOCOL = "data5"; field public static final int PROTOCOL_AIM = 0; // 0x0 field public static final int PROTOCOL_CUSTOM = -1; // 0xffffffff @@ -24423,7 +24444,10 @@ package android.provider { } public static final class ContactsContract.CommonDataKinds.Nickname implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins { + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/nickname"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String NAME = "data1"; field public static final int TYPE_DEFAULT = 1; // 0x1 field public static final int TYPE_INITIALS = 5; // 0x5 @@ -24434,16 +24458,22 @@ package android.provider { } public static final class ContactsContract.CommonDataKinds.Note implements android.provider.ContactsContract.DataColumnsWithJoins { + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/note"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String NOTE = "data1"; } public static final class ContactsContract.CommonDataKinds.Organization implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins { method public static final java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence); method public static final int getTypeLabelResource(int); + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String COMPANY = "data1"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/organization"; field public static final java.lang.String DEPARTMENT = "data5"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String JOB_DESCRIPTION = "data6"; field public static final java.lang.String OFFICE_LOCATION = "data9"; field public static final java.lang.String PHONETIC_NAME = "data8"; @@ -24456,10 +24486,13 @@ package android.provider { public static final class ContactsContract.CommonDataKinds.Phone implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins { method public static final java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence); method public static final int getTypeLabelResource(int); + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final android.net.Uri CONTENT_FILTER_URI; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone_v2"; field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/phone_v2"; field public static final android.net.Uri CONTENT_URI; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String NORMALIZED_NUMBER = "data4"; field public static final java.lang.String NUMBER = "data1"; field public static final java.lang.String SEARCH_DISPLAY_NAME_KEY = "search_display_name"; @@ -24487,7 +24520,10 @@ package android.provider { } public static final class ContactsContract.CommonDataKinds.Photo implements android.provider.ContactsContract.DataColumnsWithJoins { + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/photo"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String PHOTO = "data15"; field public static final java.lang.String PHOTO_FILE_ID = "data14"; } @@ -24495,7 +24531,10 @@ package android.provider { public static final class ContactsContract.CommonDataKinds.Relation implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins { method public static final java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence); method public static final int getTypeLabelResource(int); + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/relation"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String NAME = "data1"; field public static final int TYPE_ASSISTANT = 1; // 0x1 field public static final int TYPE_BROTHER = 2; // 0x2 @@ -24516,7 +24555,10 @@ package android.provider { public static final class ContactsContract.CommonDataKinds.SipAddress implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins { method public static final java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence); method public static final int getTypeLabelResource(int); + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/sip_address"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String SIP_ADDRESS = "data1"; field public static final int TYPE_HOME = 1; // 0x1 field public static final int TYPE_OTHER = 3; // 0x3 @@ -24524,8 +24566,11 @@ package android.provider { } public static final class ContactsContract.CommonDataKinds.StructuredName implements android.provider.ContactsContract.DataColumnsWithJoins { + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/name"; field public static final java.lang.String DISPLAY_NAME = "data1"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String FAMILY_NAME = "data3"; field public static final java.lang.String FULL_NAME_STYLE = "data10"; field public static final java.lang.String GIVEN_NAME = "data2"; @@ -24540,11 +24585,14 @@ package android.provider { public static final class ContactsContract.CommonDataKinds.StructuredPostal implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins { method public static final java.lang.CharSequence getTypeLabel(android.content.res.Resources, int, java.lang.CharSequence); method public static final int getTypeLabelResource(int); + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CITY = "data7"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/postal-address_v2"; field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/postal-address_v2"; field public static final android.net.Uri CONTENT_URI; field public static final java.lang.String COUNTRY = "data10"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String FORMATTED_ADDRESS = "data1"; field public static final java.lang.String NEIGHBORHOOD = "data6"; field public static final java.lang.String POBOX = "data5"; @@ -24557,7 +24605,10 @@ package android.provider { } public static final class ContactsContract.CommonDataKinds.Website implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins { + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/website"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final int TYPE_BLOG = 2; // 0x2 field public static final int TYPE_FTP = 6; // 0x6 field public static final int TYPE_HOME = 4; // 0x4 @@ -24568,13 +24619,6 @@ package android.provider { field public static final java.lang.String URL = "data1"; } - public static final class ContactsContract.ContactCounts { - ctor public ContactsContract.ContactCounts(); - field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; - field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; - field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; - } - protected static abstract interface ContactsContract.ContactNameColumns { field public static final java.lang.String DISPLAY_NAME_ALTERNATIVE = "display_name_alt"; field public static final java.lang.String DISPLAY_NAME_PRIMARY = "display_name"; @@ -24612,6 +24656,7 @@ package android.provider { method public static deprecated void markAsContacted(android.content.ContentResolver, long); method public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri, boolean); method public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri); + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final android.net.Uri CONTENT_FILTER_URI; field public static final android.net.Uri CONTENT_FREQUENT_URI; field public static final android.net.Uri CONTENT_GROUP_URI; @@ -24624,6 +24669,8 @@ package android.provider { field public static final android.net.Uri CONTENT_URI; field public static final java.lang.String CONTENT_VCARD_TYPE = "text/x-vcard"; field public static final android.net.Uri CONTENT_VCARD_URI; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; } public static final class ContactsContract.Contacts.AggregationSuggestions implements android.provider.BaseColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns { @@ -24668,8 +24715,11 @@ package android.provider { public static final class ContactsContract.Data implements android.provider.ContactsContract.DataColumnsWithJoins { method public static android.net.Uri getContactLookupUri(android.content.ContentResolver, android.net.Uri); + field public static final java.lang.String ADDRESS_BOOK_INDEX_EXTRAS = "address_book_index_extras"; field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/data"; field public static final android.net.Uri CONTENT_URI; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "address_book_index_counts"; + field public static final java.lang.String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "address_book_index_titles"; field public static final java.lang.String VISIBLE_CONTACTS_ONLY = "visible_contacts_only"; } @@ -24875,8 +24925,8 @@ package android.provider { public static final class ContactsContract.PinnedPositions { ctor public ContactsContract.PinnedPositions(); + method public static void undemote(android.content.ContentResolver, long); field public static final int DEMOTED = -1; // 0xffffffff - field public static final java.lang.String UNDEMOTE_METHOD = "undemote"; field public static final int UNPINNED = 0; // 0x0 } diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java index 03863ae7ff41d..1bec28589c1eb 100644 --- a/core/java/android/provider/ContactsContract.java +++ b/core/java/android/provider/ContactsContract.java @@ -1112,23 +1112,19 @@ public final class ContactsContract { public static final String SORT_KEY_ALTERNATIVE = "sort_key_alt"; } - /** - * URI parameter and cursor extras that return counts of rows grouped by the - * address book index, which is usually the first letter of the sort key. - * When this parameter is supplied, the row counts are returned in the - * cursor extras bundle. - */ - public final static class ContactCounts { + interface ContactCounts { /** - * Add this query parameter to a URI to get back row counts grouped by - * the address book index as cursor extras. For most languages it is the - * first letter of the sort key. This parameter does not affect the main - * content of the cursor. + * Add this query parameter to a URI to get back row counts grouped by the address book + * index as cursor extras. For most languages it is the first letter of the sort key. This + * parameter does not affect the main content of the cursor. * *

*

          * Example:
+         *
+         * import android.provider.ContactsContract.Contacts;
+         *
          * Uri uri = Contacts.CONTENT_URI.buildUpon()
          *          .appendQueryParameter(ContactCounts.ADDRESS_BOOK_INDEX_EXTRAS, "true")
          *          .build();
@@ -1136,11 +1132,12 @@ public final class ContactsContract {
          *          new String[] {Contacts.DISPLAY_NAME},
          *          null, null, null);
          * Bundle bundle = cursor.getExtras();
-         * if (bundle.containsKey(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_TITLES) &&
-         *         bundle.containsKey(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS)) {
+         * if (bundle.containsKey(Contacts.ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_TITLES) &&
+         *         bundle.containsKey(Contacts.ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS)) {
          *     String sections[] =
-         *             bundle.getStringArray(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_TITLES);
-         *     int counts[] = bundle.getIntArray(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS);
+         *             bundle.getStringArray(Contacts.ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_TITLES);
+         *     int counts[] = bundle.getIntArray(
+         *             Contacts.ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS);
          * }
          * 
*

@@ -1375,7 +1372,7 @@ public final class ContactsContract { * */ public static class Contacts implements BaseColumns, ContactsColumns, - ContactOptionsColumns, ContactNameColumns, ContactStatusColumns { + ContactOptionsColumns, ContactNameColumns, ContactStatusColumns, ContactCounts { /** * This utility class cannot be instantiated */ @@ -4610,7 +4607,7 @@ public final class ContactsContract { * * */ - public final static class Data implements DataColumnsWithJoins { + public final static class Data implements DataColumnsWithJoins, ContactCounts { /** * This utility class cannot be instantiated */ @@ -5518,7 +5515,7 @@ public final class ContactsContract { * * */ - public static final class StructuredName implements DataColumnsWithJoins { + public static final class StructuredName implements DataColumnsWithJoins, ContactCounts { /** * This utility class cannot be instantiated */ @@ -5663,7 +5660,8 @@ public final class ContactsContract { * * */ - public static final class Nickname implements DataColumnsWithJoins, CommonColumns { + public static final class Nickname implements DataColumnsWithJoins, CommonColumns, + ContactCounts{ /** * This utility class cannot be instantiated */ @@ -5747,7 +5745,8 @@ public final class ContactsContract { * * */ - public static final class Phone implements DataColumnsWithJoins, CommonColumns { + public static final class Phone implements DataColumnsWithJoins, CommonColumns, + ContactCounts { /** * This utility class cannot be instantiated */ @@ -5939,7 +5938,8 @@ public final class ContactsContract { * * */ - public static final class Email implements DataColumnsWithJoins, CommonColumns { + public static final class Email implements DataColumnsWithJoins, CommonColumns, + ContactCounts { /** * This utility class cannot be instantiated */ @@ -6131,7 +6131,8 @@ public final class ContactsContract { * * */ - public static final class StructuredPostal implements DataColumnsWithJoins, CommonColumns { + public static final class StructuredPostal implements DataColumnsWithJoins, CommonColumns, + ContactCounts { /** * This utility class cannot be instantiated */ @@ -6325,7 +6326,7 @@ public final class ContactsContract { * * */ - public static final class Im implements DataColumnsWithJoins, CommonColumns { + public static final class Im implements DataColumnsWithJoins, CommonColumns, ContactCounts { /** * This utility class cannot be instantiated */ @@ -6509,7 +6510,8 @@ public final class ContactsContract { * * */ - public static final class Organization implements DataColumnsWithJoins, CommonColumns { + public static final class Organization implements DataColumnsWithJoins, CommonColumns, + ContactCounts { /** * This utility class cannot be instantiated */ @@ -6652,7 +6654,8 @@ public final class ContactsContract { * * */ - public static final class Relation implements DataColumnsWithJoins, CommonColumns { + public static final class Relation implements DataColumnsWithJoins, CommonColumns, + ContactCounts { /** * This utility class cannot be instantiated */ @@ -6767,7 +6770,8 @@ public final class ContactsContract { * * */ - public static final class Event implements DataColumnsWithJoins, CommonColumns { + public static final class Event implements DataColumnsWithJoins, CommonColumns, + ContactCounts { /** * This utility class cannot be instantiated */ @@ -6855,7 +6859,7 @@ public final class ContactsContract { * * */ - public static final class Photo implements DataColumnsWithJoins { + public static final class Photo implements DataColumnsWithJoins, ContactCounts { /** * This utility class cannot be instantiated */ @@ -6903,7 +6907,7 @@ public final class ContactsContract { * * */ - public static final class Note implements DataColumnsWithJoins { + public static final class Note implements DataColumnsWithJoins, ContactCounts { /** * This utility class cannot be instantiated */ @@ -6958,7 +6962,7 @@ public final class ContactsContract { * * */ - public static final class GroupMembership implements DataColumnsWithJoins { + public static final class GroupMembership implements DataColumnsWithJoins, ContactCounts { /** * This utility class cannot be instantiated */ @@ -7030,7 +7034,8 @@ public final class ContactsContract { * * */ - public static final class Website implements DataColumnsWithJoins, CommonColumns { + public static final class Website implements DataColumnsWithJoins, CommonColumns, + ContactCounts { /** * This utility class cannot be instantiated */ @@ -7097,7 +7102,8 @@ public final class ContactsContract { * * */ - public static final class SipAddress implements DataColumnsWithJoins, CommonColumns { + public static final class SipAddress implements DataColumnsWithJoins, CommonColumns, + ContactCounts { /** * This utility class cannot be instantiated */ @@ -7155,7 +7161,7 @@ public final class ContactsContract { * to the same person. *

*/ - public static final class Identity implements DataColumnsWithJoins { + public static final class Identity implements DataColumnsWithJoins, ContactCounts { /** * This utility class cannot be instantiated */ @@ -7193,7 +7199,8 @@ public final class ContactsContract { * {@link SipAddress}'s. *

*/ - public static final class Callable implements DataColumnsWithJoins, CommonColumns { + public static final class Callable implements DataColumnsWithJoins, CommonColumns, + ContactCounts { /** * Similar to {@link Phone#CONTENT_URI}, but returns callable data instead of only * phone numbers. @@ -7217,7 +7224,8 @@ public final class ContactsContract { * can use to initiate communications with another contact. {@link Phone} and {@link Email} * are the current data types in this category. */ - public static final class Contactables implements DataColumnsWithJoins, CommonColumns { + public static final class Contactables implements DataColumnsWithJoins, CommonColumns, + ContactCounts { /** * The content:// style URI for these data items, which requests a directory of data * rows matching the selection criteria. @@ -8039,25 +8047,27 @@ public final class ContactsContract { */ public static final class PinnedPositions { /** - *

* The method to invoke in order to undemote a formerly demoted contact. The contact id of * the contact must be provided as an argument. If the contact was not previously demoted, * nothing will be done. - *

- * - *

- * Example: - *

-         * final long contactId = 10;
-         * resolver.call(ContactsContract.AUTHORITY_URI, PinnedPositions.UNDEMOTE_METHOD,
-         *         String.valueOf(contactId), null);
-         * 
- *

+ * @hide */ public static final String UNDEMOTE_METHOD = "undemote"; /** - * Default value for the pinned position of an unpinned contact. Also equal to 0. + * Undemotes a formerly demoted contact. If the contact was not previously demoted, nothing + * will be done. + * + * @param contentResolver to perform the undemote operation on. + * @param contactId the id of the contact to undemote. + */ + public static void undemote(ContentResolver contentResolver, long contactId) { + contentResolver.call(ContactsContract.AUTHORITY_URI, PinnedPositions.UNDEMOTE_METHOD, + String.valueOf(contactId), null); + } + + /** + * Default value for the pinned position of an unpinned contact. */ public static final int UNPINNED = 0;