diff --git a/core/java/android/provider/Contacts.java b/core/java/android/provider/Contacts.java index 0829cfb56d015..5f84e57785227 100644 --- a/core/java/android/provider/Contacts.java +++ b/core/java/android/provider/Contacts.java @@ -40,7 +40,7 @@ import java.io.InputStream; */ public class Contacts { private static final String TAG = "Contacts"; - + public static final String AUTHORITY = "contacts"; /** @@ -191,7 +191,7 @@ public class Contacts { *

Type: TEXT

*/ public static final String PHONETIC_NAME = "phonetic_name"; - + /** * The display name. If name is not null name, else if number is not null number, * else if email is not null email. @@ -206,7 +206,7 @@ public class Contacts { * @hide Used only in Contacts application for now. */ public static final String SORT_STRING = "sort_string"; - + /** * Notes about the person. *

Type: TEXT

@@ -248,7 +248,7 @@ public class Contacts { * The server version of the photo *

Type: TEXT (the version number portion of the photo URI)

*/ - public static final String PHOTO_VERSION = "photo_version"; + public static final String PHOTO_VERSION = "photo_version"; } /** @@ -287,14 +287,14 @@ public class Contacts { * additional path segment after this URI. This matches any people with * at least one E-mail or IM {@link ContactMethods} that match the * filter. - * + * * Not exposed because we expect significant changes in the contacts * schema and do not want to have to support this. * @hide */ public static final Uri WITH_EMAIL_OR_IM_FILTER_URI = Uri.parse("content://contacts/people/with_email_or_im_filter"); - + /** * The MIME type of {@link #CONTENT_URI} providing a directory of * people. @@ -379,13 +379,13 @@ public class Contacts { if (groupId == 0) { throw new IllegalStateException("Failed to find the My Contacts group"); } - + return addToGroup(resolver, personId, groupId); } /** * Adds a person to a group referred to by name. - * + * * @param resolver the resolver to use * @param personId the person to add to the group * @param groupName the name of the group to add the contact to @@ -409,13 +409,13 @@ public class Contacts { if (groupId == 0) { throw new IllegalStateException("Failed to find the My Contacts group"); } - + return addToGroup(resolver, personId, groupId); } /** * Adds a person to a group. - * + * * @param resolver the resolver to use * @param personId the person to add to the group * @param groupId the group to add the person to @@ -427,14 +427,14 @@ public class Contacts { values.put(GroupMembership.GROUP_ID, groupId); return resolver.insert(GroupMembership.CONTENT_URI, values); } - + private static final String[] GROUPS_PROJECTION = new String[] { Groups._ID, }; /** * Creates a new contacts and adds it to the "My Contacts" group. - * + * * @param resolver the ContentResolver to use * @param values the values to use when creating the contact * @return the URI of the contact, or null if the operation fails @@ -472,7 +472,7 @@ public class Contacts { values.put(Photos.DATA, data); cr.update(photoUri, values, null, null); } - + /** * Opens an InputStream for the person's photo and returns the photo as a Bitmap. * If the person's photo isn't present returns the placeholderImageResource instead. @@ -739,7 +739,7 @@ public class Contacts { CharSequence display = ""; if (type != People.Phones.TYPE_CUSTOM) { - CharSequence[] labels = labelArray != null? labelArray + CharSequence[] labels = labelArray != null? labelArray : context.getResources().getTextArray( com.android.internal.R.array.phoneTypes); try { @@ -759,7 +759,7 @@ public class Contacts { CharSequence label) { return getDisplayLabel(context, type, label, null); } - + /** * The content:// style URL for this table */ @@ -984,7 +984,7 @@ public class Contacts { throw new IllegalArgumentException( "the value is not a valid encoded protocol, " + encodedString); } - + /** * This looks up the provider name defined in * {@link android.provider.Im.ProviderNames} from the predefined IM protocol id. @@ -1197,7 +1197,7 @@ public class Contacts { /** * Gets the resource ID for the proper presence icon. - * + * * @param status the status to get the icon for * @return the resource ID for the proper presence icon */ @@ -1205,17 +1205,17 @@ public class Contacts { switch (status) { case Contacts.People.AVAILABLE: return com.android.internal.R.drawable.presence_online; - + case Contacts.People.IDLE: case Contacts.People.AWAY: return com.android.internal.R.drawable.presence_away; - + case Contacts.People.DO_NOT_DISTURB: return com.android.internal.R.drawable.presence_busy; - + case Contacts.People.INVISIBLE: return com.android.internal.R.drawable.presence_invisible; - + case Contacts.People.OFFLINE: default: return com.android.internal.R.drawable.presence_offline; @@ -1455,28 +1455,27 @@ public class Contacts { * This is the intent that is fired when a search suggestion is clicked on. */ public static final String SEARCH_SUGGESTION_CLICKED = - "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED"; + ContactsContract.Intents.SEARCH_SUGGESTION_CLICKED; /** - * This is the intent that is fired when a search suggestion for dialing a number + * This is the intent that is fired when a search suggestion for dialing a number * is clicked on. */ public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = - "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED"; + ContactsContract.Intents.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED; /** * This is the intent that is fired when a search suggestion for creating a contact * is clicked on. */ public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = - "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED"; + ContactsContract.Intents.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED; /** * Starts an Activity that lets the user pick a contact to attach an image to. * After picking the contact it launches the image cropper in face detection mode. */ - public static final String ATTACH_IMAGE = - "com.android.contacts.action.ATTACH_IMAGE"; + public static final String ATTACH_IMAGE = ContactsContract.Intents.ATTACH_IMAGE; /** * Takes as input a data URI with a mailto: or tel: scheme. If a single @@ -1502,7 +1501,7 @@ public class Contacts { * prompting the user when the contact doesn't exist. */ public static final String SHOW_OR_CREATE_CONTACT = - "com.android.contacts.action.SHOW_OR_CREATE_CONTACT"; + ContactsContract.Intents.SHOW_OR_CREATE_CONTACT; /** * Used with {@link #SHOW_OR_CREATE_CONTACT} to force creating a new @@ -1511,9 +1510,8 @@ public class Contacts { *

* Type: BOOLEAN */ - public static final String EXTRA_FORCE_CREATE = - "com.android.contacts.action.FORCE_CREATE"; - + public static final String EXTRA_FORCE_CREATE = ContactsContract.Intents.EXTRA_FORCE_CREATE; + /** * Used with {@link #SHOW_OR_CREATE_CONTACT} to specify an exact * description to be shown when prompting user about creating a new @@ -1522,7 +1520,7 @@ public class Contacts { * Type: STRING */ public static final String EXTRA_CREATE_DESCRIPTION = - "com.android.contacts.action.CREATE_DESCRIPTION"; + ContactsContract.Intents.EXTRA_CREATE_DESCRIPTION; /** * Intents related to the Contacts app UI. @@ -1531,43 +1529,42 @@ public class Contacts { /** * The action for the default contacts list tab. */ - public static final String LIST_DEFAULT = - "com.android.contacts.action.LIST_DEFAULT"; + public static final String LIST_DEFAULT = ContactsContract.Intents.UI.LIST_DEFAULT; /** * The action for the contacts list tab. */ public static final String LIST_GROUP_ACTION = - "com.android.contacts.action.LIST_GROUP"; + ContactsContract.Intents.UI.LIST_GROUP_ACTION; /** * When in LIST_GROUP_ACTION mode, this is the group to display. */ - public static final String GROUP_NAME_EXTRA_KEY = "com.android.contacts.extra.GROUP"; - + public static final String GROUP_NAME_EXTRA_KEY = + ContactsContract.Intents.UI.GROUP_NAME_EXTRA_KEY; /** * The action for the all contacts list tab. */ public static final String LIST_ALL_CONTACTS_ACTION = - "com.android.contacts.action.LIST_ALL_CONTACTS"; + ContactsContract.Intents.UI.LIST_ALL_CONTACTS_ACTION; /** * The action for the contacts with phone numbers list tab. */ public static final String LIST_CONTACTS_WITH_PHONES_ACTION = - "com.android.contacts.action.LIST_CONTACTS_WITH_PHONES"; + ContactsContract.Intents.UI.LIST_CONTACTS_WITH_PHONES_ACTION; /** * The action for the starred contacts list tab. */ public static final String LIST_STARRED_ACTION = - "com.android.contacts.action.LIST_STARRED"; + ContactsContract.Intents.UI.LIST_STARRED_ACTION; /** * The action for the frequent contacts list tab. */ public static final String LIST_FREQUENT_ACTION = - "com.android.contacts.action.LIST_FREQUENT"; + ContactsContract.Intents.UI.LIST_FREQUENT_ACTION; /** * The action for the "strequent" contacts list tab. It first lists the starred @@ -1575,15 +1572,15 @@ public class Contacts { * order of the number of times they have been contacted. */ public static final String LIST_STREQUENT_ACTION = - "com.android.contacts.action.LIST_STREQUENT"; + ContactsContract.Intents.UI.LIST_STREQUENT_ACTION; /** * A key for to be used as an intent extra to set the activity * title to a custom String value. */ public static final String TITLE_EXTRA_KEY = - "com.android.contacts.extra.TITLE_EXTRA"; - + ContactsContract.Intents.UI.TITLE_EXTRA_KEY; + /** * Activity Action: Display a filtered list of contacts *

@@ -1592,15 +1589,15 @@ public class Contacts { *

* Output: Nothing. */ - public static final String FILTER_CONTACTS_ACTION = - "com.android.contacts.action.FILTER_CONTACTS"; - + public static final String FILTER_CONTACTS_ACTION = + ContactsContract.Intents.UI.FILTER_CONTACTS_ACTION; + /** * Used as an int extra field in {@link #FILTER_CONTACTS_ACTION} * intents to supply the text on which to filter. */ - public static final String FILTER_TEXT_EXTRA_KEY = - "com.android.contacts.extra.FILTER_TEXT"; + public static final String FILTER_TEXT_EXTRA_KEY = + ContactsContract.Intents.UI.FILTER_TEXT_EXTRA_KEY; } /** @@ -1609,170 +1606,179 @@ public class Contacts { */ public static final class Insert { /** The action code to use when adding a contact */ - public static final String ACTION = Intent.ACTION_INSERT; - + public static final String ACTION = ContactsContract.Intents.Insert.ACTION; /** * If present, forces a bypass of quick insert mode. */ - public static final String FULL_MODE = "full_mode"; - + public static final String FULL_MODE = ContactsContract.Intents.Insert.FULL_MODE; /** * The extra field for the contact name. *

Type: String

*/ - public static final String NAME = "name"; + public static final String NAME = ContactsContract.Intents.Insert.NAME; /** * The extra field for the contact phonetic name. *

Type: String

*/ - public static final String PHONETIC_NAME = "phonetic_name"; + public static final String PHONETIC_NAME = + ContactsContract.Intents.Insert.PHONETIC_NAME; /** * The extra field for the contact company. *

Type: String

*/ - public static final String COMPANY = "company"; + public static final String COMPANY = ContactsContract.Intents.Insert.COMPANY; /** * The extra field for the contact job title. *

Type: String

*/ - public static final String JOB_TITLE = "job_title"; + public static final String JOB_TITLE = ContactsContract.Intents.Insert.JOB_TITLE; /** * The extra field for the contact notes. *

Type: String

*/ - public static final String NOTES = "notes"; + public static final String NOTES = ContactsContract.Intents.Insert.NOTES; /** * The extra field for the contact phone number. *

Type: String

*/ - public static final String PHONE = "phone"; + public static final String PHONE = ContactsContract.Intents.Insert.PHONE; /** * The extra field for the contact phone number type. *

Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns}, * or a string specifying a custom label.

*/ - public static final String PHONE_TYPE = "phone_type"; + public static final String PHONE_TYPE = ContactsContract.Intents.Insert.PHONE_TYPE; /** * The extra field for the phone isprimary flag. *

Type: boolean

*/ - public static final String PHONE_ISPRIMARY = "phone_isprimary"; + public static final String PHONE_ISPRIMARY = + ContactsContract.Intents.Insert.PHONE_ISPRIMARY; /** * The extra field for an optional second contact phone number. *

Type: String

*/ - public static final String SECONDARY_PHONE = "secondary_phone"; + public static final String SECONDARY_PHONE = + ContactsContract.Intents.Insert.SECONDARY_PHONE; /** * The extra field for an optional second contact phone number type. *

Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns}, * or a string specifying a custom label.

*/ - public static final String SECONDARY_PHONE_TYPE = "secondary_phone_type"; + public static final String SECONDARY_PHONE_TYPE = + ContactsContract.Intents.Insert.SECONDARY_PHONE_TYPE; /** * The extra field for an optional third contact phone number. *

Type: String

*/ - public static final String TERTIARY_PHONE = "tertiary_phone"; + public static final String TERTIARY_PHONE = + ContactsContract.Intents.Insert.TERTIARY_PHONE; /** * The extra field for an optional third contact phone number type. *

Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns}, * or a string specifying a custom label.

*/ - public static final String TERTIARY_PHONE_TYPE = "tertiary_phone_type"; + public static final String TERTIARY_PHONE_TYPE = + ContactsContract.Intents.Insert.TERTIARY_PHONE_TYPE; /** * The extra field for the contact email address. *

Type: String

*/ - public static final String EMAIL = "email"; + public static final String EMAIL = ContactsContract.Intents.Insert.EMAIL; /** * The extra field for the contact email type. *

Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} * or a string specifying a custom label.

*/ - public static final String EMAIL_TYPE = "email_type"; + public static final String EMAIL_TYPE = ContactsContract.Intents.Insert.EMAIL_TYPE; /** * The extra field for the email isprimary flag. *

Type: boolean

*/ - public static final String EMAIL_ISPRIMARY = "email_isprimary"; + public static final String EMAIL_ISPRIMARY = + ContactsContract.Intents.Insert.EMAIL_ISPRIMARY; /** * The extra field for an optional second contact email address. *

Type: String

*/ - public static final String SECONDARY_EMAIL = "secondary_email"; + public static final String SECONDARY_EMAIL = + ContactsContract.Intents.Insert.SECONDARY_EMAIL; /** * The extra field for an optional second contact email type. *

Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} * or a string specifying a custom label.

*/ - public static final String SECONDARY_EMAIL_TYPE = "secondary_email_type"; + public static final String SECONDARY_EMAIL_TYPE = + ContactsContract.Intents.Insert.SECONDARY_EMAIL_TYPE; /** * The extra field for an optional third contact email address. *

Type: String

*/ - public static final String TERTIARY_EMAIL = "tertiary_email"; + public static final String TERTIARY_EMAIL = + ContactsContract.Intents.Insert.TERTIARY_EMAIL; /** * The extra field for an optional third contact email type. *

Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} * or a string specifying a custom label.

*/ - public static final String TERTIARY_EMAIL_TYPE = "tertiary_email_type"; + public static final String TERTIARY_EMAIL_TYPE = + ContactsContract.Intents.Insert.TERTIARY_EMAIL_TYPE; /** * The extra field for the contact postal address. *

Type: String

*/ - public static final String POSTAL = "postal"; + public static final String POSTAL = ContactsContract.Intents.Insert.POSTAL; /** * The extra field for the contact postal address type. *

Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} * or a string specifying a custom label.

*/ - public static final String POSTAL_TYPE = "postal_type"; + public static final String POSTAL_TYPE = ContactsContract.Intents.Insert.POSTAL_TYPE; /** * The extra field for the postal isprimary flag. *

Type: boolean

*/ - public static final String POSTAL_ISPRIMARY = "postal_isprimary"; + public static final String POSTAL_ISPRIMARY = ContactsContract.Intents.Insert.POSTAL_ISPRIMARY; /** * The extra field for an IM handle. *

Type: String

*/ - public static final String IM_HANDLE = "im_handle"; + public static final String IM_HANDLE = ContactsContract.Intents.Insert.IM_HANDLE; /** * The extra field for the IM protocol *

Type: the result of {@link Contacts.ContactMethods#encodePredefinedImProtocol} * or {@link Contacts.ContactMethods#encodeCustomImProtocol}.

*/ - public static final String IM_PROTOCOL = "im_protocol"; + public static final String IM_PROTOCOL = ContactsContract.Intents.Insert.IM_PROTOCOL; /** * The extra field for the IM isprimary flag. *

Type: boolean

*/ - public static final String IM_ISPRIMARY = "im_isprimary"; + public static final String IM_ISPRIMARY = ContactsContract.Intents.Insert.IM_ISPRIMARY; } } } diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java index d98842e9ea569..48dc3aecaa105 100644 --- a/core/java/android/provider/ContactsContract.java +++ b/core/java/android/provider/ContactsContract.java @@ -16,6 +16,7 @@ package android.provider; +import android.content.Intent; import android.graphics.BitmapFactory; import android.net.Uri; @@ -179,6 +180,21 @@ public final class ContactsContract { */ public static final Uri CONTENT_SUMMARY_FILTER_URI = Uri.withAppendedPath( CONTENT_SUMMARY_URI, "filter"); + /** + * The content:// style URI for this table joined with useful data from + * {@link Data} and {@link Presence}, filtered to include only starred aggregates + * and the most frequently contacted aggregates. + */ + public static final Uri CONTENT_SUMMARY_STREQUENT_URI = Uri.withAppendedPath( + CONTENT_SUMMARY_URI, "strequent"); + /** + * The content:// style URI used for "type-to-filter" functionality on the + * {@link CONTENT_SUMMARY_STREQUENT_URI} URI. The filter string will be used to match + * various parts of the aggregate name. The filter argument should be passed + * as an additional path segment after this URI. + */ + public static final Uri CONTENT_SUMMARY_STREQUENT_FILTER_URI = Uri.withAppendedPath( + CONTENT_SUMMARY_STREQUENT_URI, "filter"); /** * The MIME type of {@link #CONTENT_URI} providing a directory of @@ -266,7 +282,8 @@ public final class ContactsContract { * * @hide */ - public static final Uri CONTENT_FILTER_EMAIL_URI = Uri.withAppendedPath(CONTENT_URI, "filter_email"); + public static final Uri CONTENT_FILTER_EMAIL_URI = + Uri.withAppendedPath(CONTENT_URI, "filter_email"); /** * The MIME type of {@link #CONTENT_URI} providing a directory of @@ -1056,4 +1073,344 @@ public final class ContactsContract { public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI, "restriction_exceptions"); } + + /** + * Contains helper classes used to create or manage {@link android.content.Intent Intents} + * that involve contacts. + */ + public static final class Intents { + /** + * This is the intent that is fired when a search suggestion is clicked on. + */ + public static final String SEARCH_SUGGESTION_CLICKED = + "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED"; + + /** + * This is the intent that is fired when a search suggestion for dialing a number + * is clicked on. + */ + public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = + "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED"; + + /** + * This is the intent that is fired when a search suggestion for creating a contact + * is clicked on. + */ + public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = + "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED"; + + /** + * Starts an Activity that lets the user pick a contact to attach an image to. + * After picking the contact it launches the image cropper in face detection mode. + */ + public static final String ATTACH_IMAGE = + "com.android.contacts.action.ATTACH_IMAGE"; + + /** + * Takes as input a data URI with a mailto: or tel: scheme. If a single + * contact exists with the given data it will be shown. If no contact + * exists, a dialog will ask the user if they want to create a new + * contact with the provided details filled in. If multiple contacts + * share the data the user will be prompted to pick which contact they + * want to view. + *

+ * For mailto: URIs, the scheme specific portion must be a + * raw email address, such as one built using + * {@link Uri#fromParts(String, String, String)}. + *

+ * For tel: URIs, the scheme specific portion is compared + * to existing numbers using the standard caller ID lookup algorithm. + * The number must be properly encoded, for example using + * {@link Uri#fromParts(String, String, String)}. + *

+ * Any extras from the {@link Insert} class will be passed along to the + * create activity if there are no contacts to show. + *

+ * Passing true for the {@link #EXTRA_FORCE_CREATE} extra will skip + * prompting the user when the contact doesn't exist. + */ + public static final String SHOW_OR_CREATE_CONTACT = + "com.android.contacts.action.SHOW_OR_CREATE_CONTACT"; + + /** + * Used with {@link #SHOW_OR_CREATE_CONTACT} to force creating a new + * contact if no matching contact found. Otherwise, default behavior is + * to prompt user with dialog before creating. + *

+ * Type: BOOLEAN + */ + public static final String EXTRA_FORCE_CREATE = + "com.android.contacts.action.FORCE_CREATE"; + + /** + * Used with {@link #SHOW_OR_CREATE_CONTACT} to specify an exact + * description to be shown when prompting user about creating a new + * contact. + *

+ * Type: STRING + */ + public static final String EXTRA_CREATE_DESCRIPTION = + "com.android.contacts.action.CREATE_DESCRIPTION"; + + /** + * Intents related to the Contacts app UI. + */ + public static final class UI { + /** + * The action for the default contacts list tab. + */ + public static final String LIST_DEFAULT = + "com.android.contacts.action.LIST_DEFAULT"; + + /** + * The action for the contacts list tab. + */ + public static final String LIST_GROUP_ACTION = + "com.android.contacts.action.LIST_GROUP"; + + /** + * When in LIST_GROUP_ACTION mode, this is the group to display. + */ + public static final String GROUP_NAME_EXTRA_KEY = "com.android.contacts.extra.GROUP"; + + /** + * The action for the all contacts list tab. + */ + public static final String LIST_ALL_CONTACTS_ACTION = + "com.android.contacts.action.LIST_ALL_CONTACTS"; + + /** + * The action for the contacts with phone numbers list tab. + */ + public static final String LIST_CONTACTS_WITH_PHONES_ACTION = + "com.android.contacts.action.LIST_CONTACTS_WITH_PHONES"; + + /** + * The action for the starred contacts list tab. + */ + public static final String LIST_STARRED_ACTION = + "com.android.contacts.action.LIST_STARRED"; + + /** + * The action for the frequent contacts list tab. + */ + public static final String LIST_FREQUENT_ACTION = + "com.android.contacts.action.LIST_FREQUENT"; + + /** + * The action for the "strequent" contacts list tab. It first lists the starred + * contacts in alphabetical order and then the frequent contacts in descending + * order of the number of times they have been contacted. + */ + public static final String LIST_STREQUENT_ACTION = + "com.android.contacts.action.LIST_STREQUENT"; + + /** + * A key for to be used as an intent extra to set the activity + * title to a custom String value. + */ + public static final String TITLE_EXTRA_KEY = + "com.android.contacts.extra.TITLE_EXTRA"; + + /** + * Activity Action: Display a filtered list of contacts + *

+ * Input: Extra field {@link #FILTER_TEXT_EXTRA_KEY} is the text to use for + * filtering + *

+ * Output: Nothing. + */ + public static final String FILTER_CONTACTS_ACTION = + "com.android.contacts.action.FILTER_CONTACTS"; + + /** + * Used as an int extra field in {@link #FILTER_CONTACTS_ACTION} + * intents to supply the text on which to filter. + */ + public static final String FILTER_TEXT_EXTRA_KEY = + "com.android.contacts.extra.FILTER_TEXT"; + } + + /** + * Convenience class that contains string constants used + * to create contact {@link android.content.Intent Intents}. + */ + public static final class Insert { + /** The action code to use when adding a contact */ + public static final String ACTION = Intent.ACTION_INSERT; + + /** + * If present, forces a bypass of quick insert mode. + */ + public static final String FULL_MODE = "full_mode"; + + /** + * The extra field for the contact name. + *

Type: String

+ */ + public static final String NAME = "name"; + + // TODO add structured name values here. + + /** + * The extra field for the contact phonetic name. + *

Type: String

+ */ + public static final String PHONETIC_NAME = "phonetic_name"; + + /** + * The extra field for the contact company. + *

Type: String

+ */ + public static final String COMPANY = "company"; + + /** + * The extra field for the contact job title. + *

Type: String

+ */ + public static final String JOB_TITLE = "job_title"; + + /** + * The extra field for the contact notes. + *

Type: String

+ */ + public static final String NOTES = "notes"; + + /** + * The extra field for the contact phone number. + *

Type: String

+ */ + public static final String PHONE = "phone"; + + /** + * The extra field for the contact phone number type. + *

Type: Either an integer value from + * {@link android.provider.Contacts.PhonesColumns PhonesColumns}, + * or a string specifying a custom label.

+ */ + public static final String PHONE_TYPE = "phone_type"; + + /** + * The extra field for the phone isprimary flag. + *

Type: boolean

+ */ + public static final String PHONE_ISPRIMARY = "phone_isprimary"; + + /** + * The extra field for an optional second contact phone number. + *

Type: String

+ */ + public static final String SECONDARY_PHONE = "secondary_phone"; + + /** + * The extra field for an optional second contact phone number type. + *

Type: Either an integer value from + * {@link android.provider.Contacts.PhonesColumns PhonesColumns}, + * or a string specifying a custom label.

+ */ + public static final String SECONDARY_PHONE_TYPE = "secondary_phone_type"; + + /** + * The extra field for an optional third contact phone number. + *

Type: String

+ */ + public static final String TERTIARY_PHONE = "tertiary_phone"; + + /** + * The extra field for an optional third contact phone number type. + *

Type: Either an integer value from + * {@link android.provider.Contacts.PhonesColumns PhonesColumns}, + * or a string specifying a custom label.

+ */ + public static final String TERTIARY_PHONE_TYPE = "tertiary_phone_type"; + + /** + * The extra field for the contact email address. + *

Type: String

+ */ + public static final String EMAIL = "email"; + + /** + * The extra field for the contact email type. + *

Type: Either an integer value from + * {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} + * or a string specifying a custom label.

+ */ + public static final String EMAIL_TYPE = "email_type"; + + /** + * The extra field for the email isprimary flag. + *

Type: boolean

+ */ + public static final String EMAIL_ISPRIMARY = "email_isprimary"; + + /** + * The extra field for an optional second contact email address. + *

Type: String

+ */ + public static final String SECONDARY_EMAIL = "secondary_email"; + + /** + * The extra field for an optional second contact email type. + *

Type: Either an integer value from + * {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} + * or a string specifying a custom label.

+ */ + public static final String SECONDARY_EMAIL_TYPE = "secondary_email_type"; + + /** + * The extra field for an optional third contact email address. + *

Type: String

+ */ + public static final String TERTIARY_EMAIL = "tertiary_email"; + + /** + * The extra field for an optional third contact email type. + *

Type: Either an integer value from + * {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} + * or a string specifying a custom label.

+ */ + public static final String TERTIARY_EMAIL_TYPE = "tertiary_email_type"; + + /** + * The extra field for the contact postal address. + *

Type: String

+ */ + public static final String POSTAL = "postal"; + + /** + * The extra field for the contact postal address type. + *

Type: Either an integer value from + * {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} + * or a string specifying a custom label.

+ */ + public static final String POSTAL_TYPE = "postal_type"; + + /** + * The extra field for the postal isprimary flag. + *

Type: boolean

+ */ + public static final String POSTAL_ISPRIMARY = "postal_isprimary"; + + /** + * The extra field for an IM handle. + *

Type: String

+ */ + public static final String IM_HANDLE = "im_handle"; + + /** + * The extra field for the IM protocol + *

Type: the result of {@link Contacts.ContactMethods#encodePredefinedImProtocol} + * or {@link Contacts.ContactMethods#encodeCustomImProtocol}.

+ */ + public static final String IM_PROTOCOL = "im_protocol"; + + /** + * The extra field for the IM isprimary flag. + *

Type: boolean

+ */ + public static final String IM_ISPRIMARY = "im_isprimary"; + } + } + }