Contacts.java revision 54b6cfa9a9e5b861a9930af873580d6dc20f773
154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/* 254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * you may not use this file except in compliance with the License. 654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * You may obtain a copy of the License at 754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 1054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * See the License for the specific language governing permissions and 1454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * limitations under the License. 1554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 1654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectpackage android.provider; 1854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.ContentResolver; 2054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.ContentUris; 2154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.ContentValues; 2254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.Context; 2354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.Intent; 2454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.Cursor; 2554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.graphics.Bitmap; 2654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.graphics.BitmapFactory; 2754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.net.Uri; 2854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.text.TextUtils; 2954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.util.Log; 3054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.widget.ImageView; 3154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 3254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport com.android.internal.R; 3354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 3454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.io.ByteArrayInputStream; 3554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.io.InputStream; 3654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 3754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/** 3854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The Contacts provider stores all information about contacts. 3954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 4054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectpublic class Contacts { 4154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static final String TAG = "Contacts"; 4254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 4354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String AUTHORITY = "contacts"; 4454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 4554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 4654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for this provider 4754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 4854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_URI = 4954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://" + AUTHORITY); 5054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 5154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** Signifies an email address row that is stored in the ContactMethods table */ 5254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int KIND_EMAIL = 1; 5354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** Signifies a postal address row that is stored in the ContactMethods table */ 5454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int KIND_POSTAL = 2; 5554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** Signifies an IM address row that is stored in the ContactMethods table */ 5654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int KIND_IM = 3; 5754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** Signifies an Organization row that is stored in the Organizations table */ 5854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int KIND_ORGANIZATION = 4; 5954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** Signifies an Phone row that is stored in the Phones table */ 6054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int KIND_PHONE = 5; 6154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 6254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 6354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 6454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 6554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Contacts() {} 6654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 6754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 6854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Columns from the Settings table that other columns join into themselves. 6954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 7054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public interface SettingsColumns { 7154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 7254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The _SYNC_ACCOUNT to which this setting corresponds. This may be null. 7354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 7454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 7554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String _SYNC_ACCOUNT = "_sync_account"; 7654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 7754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 7854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The key of this setting. 7954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 8054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 8154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String KEY = "key"; 8254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 8354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 8454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The value of this setting. 8554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 8654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 8754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String VALUE = "value"; 8854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 8954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 9054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 9154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The settings over all of the people 9254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 9354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class Settings implements BaseColumns, SettingsColumns { 9454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 9554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 9654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 9754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Settings() {} 9854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 9954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 10054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for this table 10154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 10254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_URI = 10354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/settings"); 10454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 10554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 10654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The directory twig for this sub-table 10754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 10854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_DIRECTORY = "settings"; 10954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 11054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 11154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The default sort order for this table 11254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 11354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "key ASC"; 11454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 11554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 11654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * A setting that is used to indicate if we should sync down all groups for the 11754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * specified account. For this setting the _SYNC_ACCOUNT column must be set. 11854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * If this isn't set then we will only sync the groups whose SHOULD_SYNC column 11954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * is set to true. 12054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <p> 12154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This is a boolean setting. It is true if it is set and it is anything other than the 12254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * emptry string or "0". 12354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 12454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String SYNC_EVERYTHING = "syncEverything"; 12554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 12654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static String getSetting(ContentResolver cr, String account, String key) { 12754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // For now we only support a single account and the UI doesn't know what 12854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // the account name is, so we're using a global setting for SYNC_EVERYTHING. 12954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Some day when we add multiple accounts to the UI this should honor the account 13054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // that was asked for. 13154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String selectString; 13254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String[] selectArgs; 13354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (false) { 13454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project selectString = (account == null) 13554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ? "_sync_account is null AND key=?" 13654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project : "_sync_account=? AND key=?"; 13754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project selectArgs = (account == null) 13854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ? new String[]{key} 13954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project : new String[]{account, key}; 14054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 14154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project selectString = "key=?"; 14254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project selectArgs = new String[] {key}; 14354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 14454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Cursor cursor = cr.query(Settings.CONTENT_URI, new String[]{VALUE}, 14554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project selectString, selectArgs, null); 14654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 14754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!cursor.moveToNext()) return null; 14854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return cursor.getString(0); 14954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } finally { 15054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cursor.close(); 15154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 15254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 15354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 15454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static void setSetting(ContentResolver cr, String account, String key, 15554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String value) { 15654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ContentValues values = new ContentValues(); 15754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // For now we only support a single account and the UI doesn't know what 15854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // the account name is, so we're using a global setting for SYNC_EVERYTHING. 15954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Some day when we add multiple accounts to the UI this should honor the account 16054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // that was asked for. 16154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project //values.put(_SYNC_ACCOUNT, account); 16254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project values.put(KEY, key); 16354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project values.put(VALUE, value); 16454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cr.update(Settings.CONTENT_URI, values, null, null); 16554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 16654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 16754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 16854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 16954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Columns from the People table that other tables join into themselves. 17054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 17154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public interface PeopleColumns { 17254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 17354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The persons name. 17454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 17554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 17654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String NAME = "name"; 17754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 17854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 17954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The display name. If name is not null name, else if number is not null number, 18054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * else if email is not null email. 18154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 18254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 18354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DISPLAY_NAME = "display_name"; 18454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 18554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 18654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Notes about the person. 18754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 18854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 18954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String NOTES = "notes"; 19054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 19154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 19254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The number of times a person has been contacted 19354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER</P> 19454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 19554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String TIMES_CONTACTED = "times_contacted"; 19654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 19754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 19854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The last time a person was contacted. 19954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER</P> 20054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 20154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String LAST_TIME_CONTACTED = "last_time_contacted"; 20254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 20354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 20454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * A custom ringtone associated with a person. Not always present. 20554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT (URI to the ringtone)</P> 20654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 20754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CUSTOM_RINGTONE = "custom_ringtone"; 20854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 20954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 21054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Whether the person should always be sent to voicemail. Not always 21154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * present. 21254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (0 for false, 1 for true)</P> 21354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 21454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String SEND_TO_VOICEMAIL = "send_to_voicemail"; 21554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 21654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 21754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Is the contact starred? 21854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (boolean)</P> 21954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 22054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String STARRED = "starred"; 22154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 22254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 22354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The server version of the photo 22454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT (the version number portion of the photo URI)</P> 22554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 22654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PHOTO_VERSION = "photo_version"; 22754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 22854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 22954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 23054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This table contains people. 23154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 23254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class People implements BaseColumns, SyncConstValue, PeopleColumns, 23354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project PhonesColumns, PresenceColumns { 23454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 23554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 23654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 23754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private People() {} 23854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 23954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 24054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for this table 24154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 24254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_URI = 24354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/people"); 24454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 24554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 24654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for filtering people by name. The filter 24754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * argument should be passed as an additional path segment after this URI. 24854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 24954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_FILTER_URI = 25054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/people/filter"); 25154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 25254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 25354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for the table that holds the deleted 25454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * contacts. 25554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 25654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri DELETED_CONTENT_URI = 25754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/deleted_people"); 25854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 25954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 26054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of {@link #CONTENT_URI} providing a directory of 26154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * people. 26254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 26354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_TYPE = "vnd.android.cursor.dir/person"; 26454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 26554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 26654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 26754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * person. 26854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 26954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/person"; 27054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 27154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 27254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The default sort order for this table 27354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 27454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DEFAULT_SORT_ORDER = People.NAME + " ASC"; 27554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 27654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 27754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The ID of the persons preferred phone number. 27854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (foreign key to phones table on the _ID field)</P> 27954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 28054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PRIMARY_PHONE_ID = "primary_phone"; 28154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 28254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 28354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The ID of the persons preferred email. 28454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (foreign key to contact_methods table on the 28554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * _ID field)</P> 28654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 28754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PRIMARY_EMAIL_ID = "primary_email"; 28854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 28954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 29054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The ID of the persons preferred organization. 29154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (foreign key to organizations table on the 29254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * _ID field)</P> 29354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 29454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PRIMARY_ORGANIZATION_ID = "primary_organization"; 29554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 29654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 29754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Mark a person as having been contacted. 29854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 29954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param resolver the ContentResolver to use 30054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param personId the person who was contacted 30154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 30254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static void markAsContacted(ContentResolver resolver, long personId) { 30354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri uri = ContentUris.withAppendedId(CONTENT_URI, personId); 30454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project uri = Uri.withAppendedPath(uri, "update_contact_time"); 30554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ContentValues values = new ContentValues(); 30654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // There is a trigger in place that will update TIMES_CONTACTED when 30754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // LAST_TIME_CONTACTED is modified. 30854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project values.put(LAST_TIME_CONTACTED, System.currentTimeMillis()); 30954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project resolver.update(uri, values, null, null); 31054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 31154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 31254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 31354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Adds a person to the My Contacts group. 31454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 31554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param resolver the resolver to use 31654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param personId the person to add to the group 31754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return the URI of the group membership row 31854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @throws IllegalStateException if the My Contacts group can't be found 31954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 32054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static Uri addToMyContactsGroup(ContentResolver resolver, long personId) { 32154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project long groupId = 0; 32254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Cursor groupsCursor = resolver.query(Groups.CONTENT_URI, GROUPS_PROJECTION, 32354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Groups.SYSTEM_ID + "='" + Groups.GROUP_MY_CONTACTS + "'", null, null); 32454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (groupsCursor != null) { 32554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 32654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (groupsCursor.moveToFirst()) { 32754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project groupId = groupsCursor.getLong(0); 32854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 32954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } finally { 33054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project groupsCursor.close(); 33154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 33254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 33354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 33454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (groupId == 0) { 33554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project throw new IllegalStateException("Failed to find the My Contacts group"); 33654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 33754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 33854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return addToGroup(resolver, personId, groupId); 33954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 34054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 34154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 34254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Adds a person to a group referred to by name. 34354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 34454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param resolver the resolver to use 34554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param personId the person to add to the group 34654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param groupName the name of the group to add the contact to 34754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return the URI of the group membership row 34854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @throws IllegalStateException if the group can't be found 34954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 35054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static Uri addToGroup(ContentResolver resolver, long personId, String groupName) { 35154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project long groupId = 0; 35254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Cursor groupsCursor = resolver.query(Groups.CONTENT_URI, GROUPS_PROJECTION, 35354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Groups.NAME + "=?", new String[] { groupName }, null); 35454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (groupsCursor != null) { 35554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 35654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (groupsCursor.moveToFirst()) { 35754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project groupId = groupsCursor.getLong(0); 35854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 35954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } finally { 36054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project groupsCursor.close(); 36154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 36254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 36354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 36454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (groupId == 0) { 36554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project throw new IllegalStateException("Failed to find the My Contacts group"); 36654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 36754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 36854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return addToGroup(resolver, personId, groupId); 36954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 37054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 37154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 37254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Adds a person to a group. 37354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 37454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param resolver the resolver to use 37554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param personId the person to add to the group 37654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param groupId the group to add the person to 37754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return the URI of the group membership row 37854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 37954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static Uri addToGroup(ContentResolver resolver, long personId, long groupId) { 38054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ContentValues values = new ContentValues(); 38154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project values.put(GroupMembership.PERSON_ID, personId); 38254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project values.put(GroupMembership.GROUP_ID, groupId); 38354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return resolver.insert(GroupMembership.CONTENT_URI, values); 38454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 38554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 38654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static final String[] GROUPS_PROJECTION = new String[] { 38754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Groups._ID, 38854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project }; 38954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 39054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 39154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Creates a new contacts and adds it to the "My Contacts" group. 39254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 39354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param resolver the ContentResolver to use 39454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param values the values to use when creating the contact 39554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return the URI of the contact, or null if the operation fails 39654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 39754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static Uri createPersonInMyContactsGroup(ContentResolver resolver, 39854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ContentValues values) { 39954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 40054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri contactUri = resolver.insert(People.CONTENT_URI, values); 40154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (contactUri == null) { 40254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.e(TAG, "Failed to create the contact"); 40354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return null; 40454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 40554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 40654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (addToMyContactsGroup(resolver, ContentUris.parseId(contactUri)) == null) { 40754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project resolver.delete(contactUri, null, null); 40854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return null; 40954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 41054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return contactUri; 41154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 41254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 41354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static Cursor queryGroups(ContentResolver resolver, long person) { 41454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return resolver.query(GroupMembership.CONTENT_URI, null, "person=?", 41554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project new String[]{String.valueOf(person)}, Groups.DEFAULT_SORT_ORDER); 41654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 41754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 41854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 41954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Set the photo for this person. data may be null 42054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param cr the ContentResolver to use 42154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param person the Uri of the person whose photo is to be updated 42254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param data the byte[] that represents the photo 42354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 42454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static void setPhotoData(ContentResolver cr, Uri person, byte[] data) { 42554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri photoUri = Uri.withAppendedPath(person, Contacts.Photos.CONTENT_DIRECTORY); 42654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ContentValues values = new ContentValues(); 42754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project values.put(Photos.DATA, data); 42854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cr.update(photoUri, values, null, null); 42954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 43054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 43154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 43254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Opens an InputStream for the person's photo and returns the photo as a Bitmap. 43354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * If the person's photo isn't present returns the placeholderImageResource instead. 43454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param person the person whose photo should be used 43554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 43654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static InputStream openContactPhotoInputStream(ContentResolver cr, Uri person) { 43754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri photoUri = Uri.withAppendedPath(person, Contacts.Photos.CONTENT_DIRECTORY); 43854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Cursor cursor = cr.query(photoUri, new String[]{Photos.DATA}, null, null, null); 43954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 44054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!cursor.moveToNext()) { 44154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return null; 44254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 44354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project byte[] data = cursor.getBlob(0); 44454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (data == null) { 44554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return null; 44654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 44754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return new ByteArrayInputStream(data); 44854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } finally { 44954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cursor.close(); 45054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 45154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 45254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 45354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 45454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Opens an InputStream for the person's photo and returns the photo as a Bitmap. 45554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * If the person's photo isn't present returns the placeholderImageResource instead. 45654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param context the Context 45754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param person the person whose photo should be used 45854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param placeholderImageResource the image resource to use if the person doesn't 45954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * have a photo 46054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param options the decoding options, can be set to null 46154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 46254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static Bitmap loadContactPhoto(Context context, Uri person, 46354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int placeholderImageResource, BitmapFactory.Options options) { 46454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (person == null) { 46554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return loadPlaceholderPhoto(placeholderImageResource, context, options); 46654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 46754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 46854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project InputStream stream = openContactPhotoInputStream(context.getContentResolver(), person); 46954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Bitmap bm = stream != null ? BitmapFactory.decodeStream(stream, null, options) : null; 47054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (bm == null) { 47154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project bm = loadPlaceholderPhoto(placeholderImageResource, context, options); 47254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 47354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return bm; 47454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 47554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 47654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static Bitmap loadPlaceholderPhoto(int placeholderImageResource, Context context, 47754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project BitmapFactory.Options options) { 47854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (placeholderImageResource == 0) { 47954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return null; 48054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 48154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return BitmapFactory.decodeResource(context.getResources(), 48254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project placeholderImageResource, options); 48354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 48454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 48554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 48654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * A sub directory of a single person that contains all of their Phones. 48754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 48854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class Phones implements BaseColumns, PhonesColumns, 48954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project PeopleColumns { 49054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 49154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 49254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 49354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Phones() {} 49454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 49554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 49654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The directory twig for this sub-table 49754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 49854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_DIRECTORY = "phones"; 49954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 50054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 50154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The default sort order for this table 50254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 50354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "number ASC"; 50454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 50554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 50654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 50754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * A subdirectory of a single person that contains all of their 50854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * ContactMethods. 50954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 51054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class ContactMethods 51154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project implements BaseColumns, ContactMethodsColumns, PeopleColumns { 51254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 51354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 51454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 51554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private ContactMethods() {} 51654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 51754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 51854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The directory twig for this sub-table 51954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 52054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_DIRECTORY = "contact_methods"; 52154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 52254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 52354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The default sort order for this table 52454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 52554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "data ASC"; 52654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 52754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 52854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 52954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extensions for a person 53054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 53154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static class Extensions implements BaseColumns, ExtensionsColumns { 53254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 53354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 53454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 53554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Extensions() {} 53654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 53754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 53854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The directory twig for this sub-table 53954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 54054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_DIRECTORY = "extensions"; 54154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 54254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 54354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The default sort order for this table 54454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 54554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "name ASC"; 54654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 54754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 54854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The ID of the person this phone number is assigned to. 54954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (long)</P> 55054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 55154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PERSON_ID = "person"; 55254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 55354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 55454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 55554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 55654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Columns from the groups table. 55754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 55854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public interface GroupsColumns { 55954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 56054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The group name. 56154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 56254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 56354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String NAME = "name"; 56454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 56554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 56654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Notes about the group. 56754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 56854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 56954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String NOTES = "notes"; 57054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 57154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 57254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Whether this group should be synced if the SYNC_EVERYTHING settings is false 57354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * for this group's account. 57454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (boolean)</P> 57554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 57654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String SHOULD_SYNC = "should_sync"; 57754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 57854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 57954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The ID of this group if it is a System Group, null otherwise. 58054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 58154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 58254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String SYSTEM_ID = "system_id"; 58354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 58454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 58554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 58654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This table contains the groups for an account. 58754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 58854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class Groups 58954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project implements BaseColumns, SyncConstValue, GroupsColumns { 59054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 59154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 59254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 59354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Groups() {} 59454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 59554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 59654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for this table 59754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 59854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_URI = 59954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/groups"); 60054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 60154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 60254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for the table that holds the deleted 60354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * groups. 60454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 60554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri DELETED_CONTENT_URI = 60654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/deleted_groups"); 60754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 60854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 60954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of {@link #CONTENT_URI} providing a directory of 61054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * groups. 61154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 61254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroup"; 61354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 61454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 61554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 61654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * group. 61754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 61854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroup"; 61954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 62054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 62154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The default sort order for this table 62254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 62354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DEFAULT_SORT_ORDER = NAME + " ASC"; 62454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 62554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 62654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 62754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 62854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String GROUP_ANDROID_STARRED = "Starred in Android"; 62954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 63054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 63154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The "My Contacts" system group. 63254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 63354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String GROUP_MY_CONTACTS = "Contacts"; 63454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 63554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 63654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 63754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Columns from the Phones table that other columns join into themselves. 63854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 63954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public interface PhonesColumns { 64054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 64154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The type of the the phone number. 64254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (one of the constants below)</P> 64354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 64454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String TYPE = "type"; 64554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 64654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_CUSTOM = 0; 64754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_HOME = 1; 64854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_MOBILE = 2; 64954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_WORK = 3; 65054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_FAX_WORK = 4; 65154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_FAX_HOME = 5; 65254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_PAGER = 6; 65354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_OTHER = 7; 65454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 65554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 65654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The user provided label for the phone number, only used if TYPE is TYPE_CUSTOM. 65754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 65854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 65954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String LABEL = "label"; 66054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 66154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 66254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The phone number as the user entered it. 66354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 66454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 66554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String NUMBER = "number"; 66654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 66754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 66854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The normalized phone number 66954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 67054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 67154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String NUMBER_KEY = "number_key"; 67254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 67354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 67454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Whether this is the primary phone number 67554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (if set, non-0 means true)</P> 67654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 67754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String ISPRIMARY = "isprimary"; 67854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 67954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 68054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 68154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This table stores phone numbers and a reference to the person that the 68254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * contact method belongs to. Phone numbers are stored separately from 68354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * other contact methods to make caller ID lookup more efficient. 68454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 68554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class Phones 68654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project implements BaseColumns, PhonesColumns, PeopleColumns { 68754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 68854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 68954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 69054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Phones() {} 69154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 69254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final CharSequence getDisplayLabel(Context context, int type, 69354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project CharSequence label, CharSequence[] labelArray) { 69454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project CharSequence display = ""; 69554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 69654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (type != People.Phones.TYPE_CUSTOM) { 69754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project CharSequence[] labels = labelArray != null? labelArray 69854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project : context.getResources().getTextArray( 69954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project com.android.internal.R.array.phoneTypes); 70054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 70154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = labels[type - 1]; 70254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (ArrayIndexOutOfBoundsException e) { 70354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = labels[People.Phones.TYPE_HOME - 1]; 70454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 70554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 70654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!TextUtils.isEmpty(label)) { 70754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = label; 70854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 70954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return display; 71154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 71354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final CharSequence getDisplayLabel(Context context, int type, 71454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project CharSequence label) { 71554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return getDisplayLabel(context, type, label, null); 71654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 71854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 71954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for this table 72054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 72154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_URI = 72254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/phones"); 72354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 72454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 72554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for filtering phone numbers 72654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 72754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_FILTER_URL = 72854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/phones/filter"); 72954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 73054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 73154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of {@link #CONTENT_URI} providing a directory of 73254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * phones. 73354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 73454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_TYPE = "vnd.android.cursor.dir/phone"; 73554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 73654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 73754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 73854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * phone. 73954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 74054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone"; 74154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 74254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 74354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The default sort order for this table 74454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 74554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "name ASC"; 74654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 74754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 74854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The ID of the person this phone number is assigned to. 74954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (long)</P> 75054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 75154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PERSON_ID = "person"; 75254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 75354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 75454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class GroupMembership implements BaseColumns, GroupsColumns { 75554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 75654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 75754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 75854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private GroupMembership() {} 75954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 76054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 76154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for this table 76254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 76354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_URI = 76454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/groupmembership"); 76554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 76654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 76754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for this table 76854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 76954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri RAW_CONTENT_URI = 77054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/groupmembershipraw"); 77154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 77254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 77354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The directory twig for this sub-table 77454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 77554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_DIRECTORY = "groupmembership"; 77654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 77754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of {@link #CONTENT_URI} providing a directory of all 77854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * person groups. 77954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 78054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroupmembership"; 78154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 78254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 78354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 78454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * person group. 78554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 78654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_ITEM_TYPE = 78754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "vnd.android.cursor.item/contactsgroupmembership"; 78854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 78954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 79054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The default sort order for this table 79154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 79254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "group_id ASC"; 79354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 79454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 79554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The row id of the accounts group. 79654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 79754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 79854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String GROUP_ID = "group_id"; 79954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 80054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 80154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The sync id of the group. 80254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 80354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 80454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String GROUP_SYNC_ID = "group_sync_id"; 80554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 80654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 80754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The account of the group. 80854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 80954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 81054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String GROUP_SYNC_ACCOUNT = "group_sync_account"; 81154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 81254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 81354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The row id of the person. 81454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 81554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 81654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PERSON_ID = "person"; 81754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 81854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 81954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 82054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Columns from the ContactMethods table that other tables join into 82154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * themseleves. 82254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 82354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public interface ContactMethodsColumns { 82454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 82554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The kind of the the contact method. For example, email address, 82654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * postal address, etc. 82754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (one of the values below)</P> 82854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 82954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String KIND = "kind"; 83054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 83154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 83254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The type of the contact method, must be one of the types below. 83354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (one of the values below)</P> 83454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 83554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String TYPE = "type"; 83654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_CUSTOM = 0; 83754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_HOME = 1; 83854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_WORK = 2; 83954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_OTHER = 3; 84054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 84154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 84254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The user defined label for the the contact method. 84354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 84454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 84554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String LABEL = "label"; 84654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 84754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 84854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The data for the contact method. 84954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 85054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 85154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DATA = "data"; 85254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 85354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 85454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Auxiliary data for the contact method. 85554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 85654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 85754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String AUX_DATA = "aux_data"; 85854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 85954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 86054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Whether this is the primary organization 86154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (if set, non-0 means true)</P> 86254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 86354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String ISPRIMARY = "isprimary"; 86454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 86554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 86654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 86754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This table stores all non-phone contact methods and a reference to the 86854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * person that the contact method belongs to. 86954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 87054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class ContactMethods 87154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project implements BaseColumns, ContactMethodsColumns, PeopleColumns { 87254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 87354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The column with latitude data for postal locations 87454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: REAL</P> 87554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 87654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String POSTAL_LOCATION_LATITUDE = DATA; 87754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 87854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 87954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The column with longitude data for postal locations 88054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: REAL</P> 88154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 88254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String POSTAL_LOCATION_LONGITUDE = AUX_DATA; 88354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 88454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 88554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The predefined IM protocol types. The protocol can either be non-present, one 88654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * of these types, or a free-form string. These cases are encoded in the AUX_DATA 88754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * column as: 88854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * - null 88954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * - pre:<an integer, one of the protocols below> 89054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * - custom:<a string> 89154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 89254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int PROTOCOL_AIM = 0; 89354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int PROTOCOL_MSN = 1; 89454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int PROTOCOL_YAHOO = 2; 89554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int PROTOCOL_SKYPE = 3; 89654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int PROTOCOL_QQ = 4; 89754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int PROTOCOL_GOOGLE_TALK = 5; 89854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int PROTOCOL_ICQ = 6; 89954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int PROTOCOL_JABBER = 7; 90054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 90154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static String encodePredefinedImProtocol(int protocol) { 90254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return "pre:" + protocol; 90354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 90454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 90554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static String encodeCustomImProtocol(String protocolString) { 90654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return "custom:" + protocolString; 90754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 90854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 90954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static Object decodeImProtocol(String encodedString) { 91054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (encodedString == null) { 91154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return null; 91254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 91354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 91454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (encodedString.startsWith("pre:")) { 91554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return Integer.parseInt(encodedString.substring(4)); 91654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 91754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 91854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (encodedString.startsWith("custom:")) { 91954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return encodedString.substring(7); 92054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 92154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 92254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project throw new IllegalArgumentException( 92354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "the value is not a valid encoded protocol, " + encodedString); 92454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 92554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 92654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 92754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This looks up the provider category defined in 92854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * {@link android.provider.Im.ProviderCategories} from the predefined IM protocol id. 92954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This is used for interacting with the IM application. 93054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 93154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param protocol the protocol ID 93254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return the provider category the IM app uses for the given protocol, or null if no 93354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * provider is defined for the given protocol 93454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @hide 93554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 93654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static String lookupProviderCategoryFromId(int protocol) { 93754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project switch (protocol) { 93854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case PROTOCOL_GOOGLE_TALK: 93954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return Im.ProviderCategories.GTALK; 94054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case PROTOCOL_AIM: 94154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return Im.ProviderCategories.AIM; 94254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case PROTOCOL_MSN: 94354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return Im.ProviderCategories.MSN; 94454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case PROTOCOL_YAHOO: 94554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return Im.ProviderCategories.YAHOO; 94654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case PROTOCOL_ICQ: 94754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return Im.ProviderCategories.ICQ; 94854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 94954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return null; 95054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 95154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 95254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 95354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 95454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 95554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private ContactMethods() {} 95654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 95754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final CharSequence getDisplayLabel(Context context, int kind, 95854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int type, CharSequence label) { 95954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project CharSequence display = ""; 96054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project switch (kind) { 96154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case KIND_EMAIL: { 96254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (type != People.ContactMethods.TYPE_CUSTOM) { 96354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project CharSequence[] labels = context.getResources().getTextArray( 96454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project com.android.internal.R.array.emailAddressTypes); 96554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 96654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = labels[type - 1]; 96754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (ArrayIndexOutOfBoundsException e) { 96854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = labels[ContactMethods.TYPE_HOME - 1]; 96954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 97054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 97154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!TextUtils.isEmpty(label)) { 97254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = label; 97354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 97454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 97554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 97654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 97754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 97854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case KIND_POSTAL: { 97954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (type != People.ContactMethods.TYPE_CUSTOM) { 98054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project CharSequence[] labels = context.getResources().getTextArray( 98154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project com.android.internal.R.array.postalAddressTypes); 98254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 98354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = labels[type - 1]; 98454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (ArrayIndexOutOfBoundsException e) { 98554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = labels[ContactMethods.TYPE_HOME - 1]; 98654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 98754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 98854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!TextUtils.isEmpty(label)) { 98954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = label; 99054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 99154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 99254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 99354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 99454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 99554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project default: 99654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = context.getString(R.string.untitled); 99754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 99854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return display; 99954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 100054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 100154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 100254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Add a longitude and latitude location to a postal address. 100354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 100454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param context the context to use when updating the database 100554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param postalId the address to update 100654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param latitude the latitude for the address 100754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param longitude the longitude for the address 100854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 100954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void addPostalLocation(Context context, long postalId, 101054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project double latitude, double longitude) { 101154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project final ContentResolver resolver = context.getContentResolver(); 101254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Insert the location 101354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ContentValues values = new ContentValues(2); 101454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project values.put(POSTAL_LOCATION_LATITUDE, latitude); 101554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project values.put(POSTAL_LOCATION_LONGITUDE, longitude); 101654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri loc = resolver.insert(CONTENT_URI, values); 101754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project long locId = ContentUris.parseId(loc); 101854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 101954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Update the postal address 102054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project values.clear(); 102154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project values.put(AUX_DATA, locId); 102254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project resolver.update(ContentUris.withAppendedId(CONTENT_URI, postalId), values, null, null); 102354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 102454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 102554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 102654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for this table 102754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 102854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_URI = 102954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/contact_methods"); 103054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 103154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 103254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for sub-directory of e-mail addresses. 103354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 103454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_EMAIL_URI = 103554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/contact_methods/email"); 103654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 103754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 103854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of {@link #CONTENT_URI} providing a directory of 103954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * phones. 104054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 104154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact-methods"; 104254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 104354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 104454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of a {@link #CONTENT_EMAIL_URI} sub-directory of\ 104554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * multiple {@link Contacts#KIND_EMAIL} entries. 104654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 104754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_EMAIL_TYPE = "vnd.android.cursor.dir/email"; 104854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 104954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 105054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of a {@link #CONTENT_EMAIL_URI} sub-directory of\ 105154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * multiple {@link Contacts#KIND_POSTAL} entries. 105254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 105354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_POSTAL_TYPE = "vnd.android.cursor.dir/postal-address"; 105454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 105554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 105654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} sub-directory of a single 105754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * {@link Contacts#KIND_EMAIL} entry. 105854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 105954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_EMAIL_ITEM_TYPE = "vnd.android.cursor.item/email"; 106054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 106154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 106254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} sub-directory of a single 106354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * {@link Contacts#KIND_POSTAL} entry. 106454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 106554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_POSTAL_ITEM_TYPE 106654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project = "vnd.android.cursor.item/postal-address"; 106754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 106854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 106954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} sub-directory of a single 107054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * {@link Contacts#KIND_IM} entry. 107154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 107254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_IM_ITEM_TYPE = "vnd.android.cursor.item/jabber-im"; 107354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 107454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 107554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The default sort order for this table 107654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 107754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "name ASC"; 107854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 107954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 108054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The ID of the person this contact method is assigned to. 108154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (long)</P> 108254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 108354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PERSON_ID = "person"; 108454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 108554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 108654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 108754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The IM presence columns with some contacts specific columns mixed in. 108854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 108954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public interface PresenceColumns extends Im.CommonPresenceColumns { 109054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 109154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The IM service the presence is coming from. Formatted using either 109254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * {@link Contacts.ContactMethods#encodePredefinedImProtocol} or 109354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * {@link Contacts.ContactMethods#encodeCustomImProtocol}. 109454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: STRING</P> 109554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 109654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String IM_PROTOCOL = "im_protocol"; 109754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 109854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 109954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The IM handle the presence item is for. The handle is scoped to 110054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * the {@link #IM_PROTOCOL}. 110154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: STRING</P> 110254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 110354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String IM_HANDLE = "im_handle"; 110454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 110554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 110654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The IM account for the local user that the presence data came from. 110754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: STRING</P> 110854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 110954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String IM_ACCOUNT = "im_account"; 111054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 111154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 111254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 111354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Contains presence information about contacts. 111454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @hide 111554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 111654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class Presence 111754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project implements BaseColumns, PresenceColumns, PeopleColumns { 111854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 111954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for this table 112054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 112154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_URI = 112254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/presence"); 112354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 112454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 112554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The ID of the person this presence item is assigned to. 112654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (long)</P> 112754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 112854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PERSON_ID = "person"; 112954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 113054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 113154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Gets the resource ID for the proper presence icon. 113254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 113354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param status the status to get the icon for 113454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @return the resource ID for the proper presence icon 113554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 113654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int getPresenceIconResourceId(int status) { 113754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project switch (status) { 113854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case Contacts.People.AVAILABLE: 113954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return com.android.internal.R.drawable.presence_online; 114054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 114154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case Contacts.People.IDLE: 114254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case Contacts.People.AWAY: 114354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return com.android.internal.R.drawable.presence_away; 114454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 114554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case Contacts.People.DO_NOT_DISTURB: 114654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return com.android.internal.R.drawable.presence_busy; 114754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 114854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case Contacts.People.INVISIBLE: 114954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return com.android.internal.R.drawable.presence_invisible; 115054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 115154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project case Contacts.People.OFFLINE: 115254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project default: 115354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return com.android.internal.R.drawable.presence_offline; 115454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 115554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 115654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 115754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 115854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Sets a presence icon to the proper graphic 115954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 116054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param icon the icon to to set 116154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param serverStatus that status 116254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 116354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final void setPresenceIcon(ImageView icon, int serverStatus) { 116454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project icon.setImageResource(getPresenceIconResourceId(serverStatus)); 116554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 116654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 116754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 116854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 116954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Columns from the Organizations table that other columns join into themselves. 117054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 117154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public interface OrganizationColumns { 117254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 117354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The type of the the phone number. 117454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (one of the constants below)</P> 117554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 117654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String TYPE = "type"; 117754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 117854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_CUSTOM = 0; 117954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_WORK = 1; 118054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final int TYPE_OTHER = 2; 118154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 118254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 118354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The user provided label, only used if TYPE is TYPE_CUSTOM. 118454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 118554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 118654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String LABEL = "label"; 118754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 118854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 118954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The name of the company for this organization. 119054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 119154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 119254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String COMPANY = "company"; 119354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 119454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 119554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The title within this organization. 119654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 119754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 119854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String TITLE = "title"; 119954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 120054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 120154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The person this organization is tied to. 120254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 120354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 120454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PERSON_ID = "person"; 120554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 120654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 120754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Whether this is the primary organization 120854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (if set, non-0 means true)</P> 120954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 121054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String ISPRIMARY = "isprimary"; 121154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 121254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 121354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 121454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * A sub directory of a single person that contains all of their Phones. 121554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 121654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class Organizations implements BaseColumns, OrganizationColumns { 121754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 121854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 121954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 122054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Organizations() {} 122154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 122254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final CharSequence getDisplayLabel(Context context, int type, 122354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project CharSequence label) { 122454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project CharSequence display = ""; 122554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 122654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (type != TYPE_CUSTOM) { 122754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project CharSequence[] labels = context.getResources().getTextArray( 122854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project com.android.internal.R.array.organizationTypes); 122954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 123054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = labels[type - 1]; 123154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (ArrayIndexOutOfBoundsException e) { 123254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = labels[People.Phones.TYPE_HOME - 1]; 123354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 123454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 123554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!TextUtils.isEmpty(label)) { 123654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project display = label; 123754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 123854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 123954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return display; 124054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 124154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 124254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 124354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for this table 124454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 124554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_URI = 124654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/organizations"); 124754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 124854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 124954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The directory twig for this sub-table 125054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 125154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_DIRECTORY = "organizations"; 125254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 125354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 125454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The default sort order for this table 125554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 125654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "company, title, isprimary ASC"; 125754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 125854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 125954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 126054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Columns from the Photos table that other columns join into themselves. 126154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 126254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public interface PhotosColumns { 126354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 126454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The _SYNC_VERSION of the photo that was last downloaded 126554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 126654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 126754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String LOCAL_VERSION = "local_version"; 126854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 126954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 127054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The person this photo is associated with. 127154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 127254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 127354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PERSON_ID = "person"; 127454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 127554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 127654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * non-zero if a download is required and the photo isn't marked as a bad resource. 127754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * You must specify this in the columns in order to use it in the where clause. 127854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER(boolean)</P> 127954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 128054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DOWNLOAD_REQUIRED = "download_required"; 128154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 128254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 128354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * non-zero if this photo is known to exist on the server 128454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER(boolean)</P> 128554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 128654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String EXISTS_ON_SERVER = "exists_on_server"; 128754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 128854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 128954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Contains the description of the upload or download error from 129054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * the previous attempt. If null then the previous attempt succeeded. 129154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 129254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 129354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String SYNC_ERROR = "sync_error"; 129454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 129554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 129654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The image data, or null if there is no image. 129754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: BLOB</P> 129854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 129954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DATA = "data"; 130054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 130154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 130254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 130354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 130454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The photos over all of the people 130554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 130654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class Photos implements BaseColumns, PhotosColumns, SyncConstValue { 130754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 130854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 130954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 131054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Photos() {} 131154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 131254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 131354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for this table 131454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 131554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_URI = 131654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/photos"); 131754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 131854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 131954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The directory twig for this sub-table 132054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 132154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_DIRECTORY = "photo"; 132254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 132354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 132454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The default sort order for this table 132554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 132654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "person ASC"; 132754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 132854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 132954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public interface ExtensionsColumns { 133054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 133154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The name of this extension. May not be null. There may be at most one row for each name. 133254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 133354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 133454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String NAME = "name"; 133554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 133654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 133754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The value of this extension. May not be null. 133854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: TEXT</P> 133954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 134054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String VALUE = "value"; 134154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 134254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 134354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 134454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extensions for a person 134554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 134654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class Extensions implements BaseColumns, ExtensionsColumns { 134754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 134854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * no public constructor since this is a utility class 134954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 135054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Extensions() {} 135154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 135254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 135354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The content:// style URL for this table 135454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 135554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final Uri CONTENT_URI = 135654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Uri.parse("content://contacts/extensions"); 135754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 135854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 135954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of {@link #CONTENT_URI} providing a directory of 136054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * phones. 136154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 136254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_extensions"; 136354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 136454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 136554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 136654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * phone. 136754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 136854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_extensions"; 136954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 137054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The default sort order for this table 137154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 137254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "person, name ASC"; 137354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 137454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 137554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The ID of the person this phone number is assigned to. 137654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: INTEGER (long)</P> 137754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 137854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PERSON_ID = "person"; 137954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 138054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 138154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 138254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Contains helper classes used to create or manage {@link android.content.Intent Intents} 138354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * that involve contacts. 138454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 138554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class Intents { 138654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 138754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This is the intent that is fired when a search suggestion is clicked on. 138854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 138954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String SEARCH_SUGGESTION_CLICKED = 139054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED"; 139154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 139254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 139354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This is the intent that is fired when a search suggestion for dialing a number 139454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * is clicked on. 139554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 139654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = 139754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED"; 139854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 139954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 140054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * This is the intent that is fired when a search suggestion for creating a contact 140154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * is clicked on. 140254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 140354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = 140454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED"; 140554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 140654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 140754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Starts an Activity that lets the user pick a contact to attach an image to. 140854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * After picking the contact it launches the image cropper in face detection mode. 140954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 141054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String ATTACH_IMAGE = 141154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "com.android.contacts.action.ATTACH_IMAGE"; 141254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 141354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 141454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Intents related to the Contacts app UI. 141554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 141654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class UI { 141754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 141854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The action for the default contacts list tab. 141954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 142054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String LIST_DEFAULT = 142154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "com.android.contacts.action.LIST_DEFAULT"; 142254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 142354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 142454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The action for the contacts list tab. 142554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 142654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String LIST_GROUP_ACTION = 142754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "com.android.contacts.action.LIST_GROUP"; 142854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 142954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 143054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * When in LIST_GROUP_ACTION mode, this is the group to display. 143154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 143254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String GROUP_NAME_EXTRA_KEY = "com.android.contacts.extra.GROUP"; 143354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 143454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 143554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The action for the all contacts list tab. 143654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 143754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String LIST_ALL_CONTACTS_ACTION = 143854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "com.android.contacts.action.LIST_ALL_CONTACTS"; 143954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 144054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 144154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The action for the contacts with phone numbers list tab. 144254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 144354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String LIST_CONTACTS_WITH_PHONES_ACTION = 144454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "com.android.contacts.action.LIST_CONTACTS_WITH_PHONES"; 144554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 144654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 144754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The action for the starred contacts list tab. 144854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 144954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String LIST_STARRED_ACTION = 145054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "com.android.contacts.action.LIST_STARRED"; 145154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 145254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 145354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The action for the frequent contacts list tab. 145454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 145554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String LIST_FREQUENT_ACTION = 145654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "com.android.contacts.action.LIST_FREQUENT"; 145754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 145854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 145954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The action for the "strequent" contacts list tab. It first lists the starred 146054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * contacts in alphabetical order and then the frequent contacts in descending 146154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * order of the number of times they have been contacted. 146254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 146354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String LIST_STREQUENT_ACTION = 146454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "com.android.contacts.action.LIST_STREQUENT"; 146554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 146654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 146754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * A key for to be used as an intent extra to set the activity 146854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * title to a custom String value. 146954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 147054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String TITLE_EXTRA_KEY = 147154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "com.android.contacts.extra.TITLE_EXTRA"; 147254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 147354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 147454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Activity Action: Display a filtered list of contacts 147554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <p> 147654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Input: Extra field {@link #FILTER_TEXT_EXTRA_KEY} is the text to use for 147754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * filtering 147854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <p> 147954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Output: Nothing. 148054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 148154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String FILTER_CONTACTS_ACTION = 148254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "com.android.contacts.action.FILTER_CONTACTS"; 148354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 148454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 148554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Used as an int extra field in {@link #FILTER_CONTACTS_ACTION} 148654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * intents to supply the text on which to filter. 148754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 148854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String FILTER_TEXT_EXTRA_KEY = 148954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "com.android.contacts.extra.FILTER_TEXT"; 149054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 149154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 149254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 149354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Convenience class that contains string constants used 149454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * to create contact {@link android.content.Intent Intents}. 149554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 149654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final class Insert { 149754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** The action code to use when adding a contact */ 149854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String ACTION = Intent.ACTION_INSERT; 149954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 150054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 150154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * If present, forces a bypass of quick insert mode. 150254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 150354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String FULL_MODE = "full_mode"; 150454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 150554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 150654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the contact name. 150754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: String</P> 150854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 150954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String NAME = "name"; 151054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 151154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 151254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the contact company. 151354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: String</P> 151454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 151554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String COMPANY = "company"; 151654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 151754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 151854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the contact job title. 151954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: String</P> 152054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 152154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String JOB_TITLE = "job_title"; 152254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 152354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 152454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the contact notes. 152554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: String</P> 152654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 152754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String NOTES = "notes"; 152854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 152954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 153054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the contact phone number. 153154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: String</P> 153254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 153354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PHONE = "phone"; 153454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 153554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 153654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the contact phone number type. 153754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns}, 153854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * or a string specifying a type and label.</P> 153954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 154054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PHONE_TYPE = "phone_type"; 154154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 154254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 154354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the phone isprimary flag. 154454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: boolean</P> 154554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 154654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String PHONE_ISPRIMARY = "phone_isprimary"; 154754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 154854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 154954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the contact email address. 155054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: String</P> 155154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 155254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String EMAIL = "email"; 155354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 155454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 155554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the contact email type. 155654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} 155754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * or a string specifying a type and label.</P> 155854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 155954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String EMAIL_TYPE = "email_type"; 156054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 156154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 156254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the email isprimary flag. 156354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: boolean</P> 156454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 156554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String EMAIL_ISPRIMARY = "email_isprimary"; 156654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 156754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 156854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the contact postal address. 156954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: String</P> 157054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 157154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String POSTAL = "postal"; 157254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 157354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 157454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the contact postal address type. 157554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} 157654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * or a string specifying a type and label.</P> 157754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 157854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String POSTAL_TYPE = "postal_type"; 157954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 158054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 158154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the postal isprimary flag. 158254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: boolean</P> 158354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 158454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String POSTAL_ISPRIMARY = "postal_isprimary"; 158554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 158654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 158754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for an IM handle. 158854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: String</P> 158954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 159054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String IM_HANDLE = "im_handle"; 159154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 159254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 159354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the IM protocol 159454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: the result of {@link Contacts.ContactMethods#encodePredefinedImProtocol} 159554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * or {@link Contacts.ContactMethods#encodeCustomImProtocol}.</P> 159654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 159754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String IM_PROTOCOL = "im_protocol"; 159854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 159954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 160054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The extra field for the IM isprimary flag. 160154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * <P>Type: boolean</P> 160254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 160354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public static final String IM_ISPRIMARY = "im_isprimary"; 160454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 160554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 160654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 1607