Contacts.java revision 9066cfe9886ac131c34d59ed0e2d287b0e3c0087
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.provider; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.R; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ContentResolver; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ContentUris; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ContentValues; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.Cursor; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Bitmap; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.BitmapFactory; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.Uri; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.TextUtils; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.ImageView; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.ByteArrayInputStream; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.InputStream; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The Contacts provider stores all information about contacts. 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class Contacts { 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final String TAG = "Contacts"; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String AUTHORITY = "contacts"; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for this provider 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_URI = 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://" + AUTHORITY); 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Signifies an email address row that is stored in the ContactMethods table */ 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int KIND_EMAIL = 1; 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Signifies a postal address row that is stored in the ContactMethods table */ 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int KIND_POSTAL = 2; 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Signifies an IM address row that is stored in the ContactMethods table */ 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int KIND_IM = 3; 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Signifies an Organization row that is stored in the Organizations table */ 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int KIND_ORGANIZATION = 4; 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Signifies an Phone row that is stored in the Phones table */ 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int KIND_PHONE = 5; 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Contacts() {} 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Columns from the Settings table that other columns join into themselves. 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public interface SettingsColumns { 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The _SYNC_ACCOUNT to which this setting corresponds. This may be null. 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String _SYNC_ACCOUNT = "_sync_account"; 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The key of this setting. 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String KEY = "key"; 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The value of this setting. 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String VALUE = "value"; 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The settings over all of the people 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class Settings implements BaseColumns, SettingsColumns { 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Settings() {} 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for this table 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_URI = 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/settings"); 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The directory twig for this sub-table 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_DIRECTORY = "settings"; 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The default sort order for this table 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "key ASC"; 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A setting that is used to indicate if we should sync down all groups for the 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * specified account. For this setting the _SYNC_ACCOUNT column must be set. 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If this isn't set then we will only sync the groups whose SHOULD_SYNC column 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is set to true. 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This is a boolean setting. It is true if it is set and it is anything other than the 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * emptry string or "0". 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SYNC_EVERYTHING = "syncEverything"; 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static String getSetting(ContentResolver cr, String account, String key) { 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // For now we only support a single account and the UI doesn't know what 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // the account name is, so we're using a global setting for SYNC_EVERYTHING. 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Some day when we add multiple accounts to the UI this should honor the account 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // that was asked for. 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String selectString; 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String[] selectArgs; 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (false) { 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project selectString = (account == null) 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ? "_sync_account is null AND key=?" 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project : "_sync_account=? AND key=?"; 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project selectArgs = (account == null) 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ? new String[]{key} 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project : new String[]{account, key}; 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project selectString = "key=?"; 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project selectArgs = new String[] {key}; 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Cursor cursor = cr.query(Settings.CONTENT_URI, new String[]{VALUE}, 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project selectString, selectArgs, null); 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!cursor.moveToNext()) return null; 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return cursor.getString(0); 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cursor.close(); 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void setSetting(ContentResolver cr, String account, String key, 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String value) { 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ContentValues values = new ContentValues(); 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // For now we only support a single account and the UI doesn't know what 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // the account name is, so we're using a global setting for SYNC_EVERYTHING. 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Some day when we add multiple accounts to the UI this should honor the account 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // that was asked for. 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //values.put(_SYNC_ACCOUNT, account); 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project values.put(KEY, key); 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project values.put(VALUE, value); 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cr.update(Settings.CONTENT_URI, values, null, null); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Columns from the People table that other tables join into themselves. 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public interface PeopleColumns { 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The person's name. 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String NAME = "name"; 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Phonetic equivalent of the person's name, in a locale-dependent 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * character set (e.g. hiragana for Japanese). 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Used for pronunciation and/or collation in some languages. 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Type: TEXT</P> 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PHONETIC_NAME = "phonetic_name"; 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The display name. If name is not null name, else if number is not null number, 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * else if email is not null email. 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DISPLAY_NAME = "display_name"; 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Notes about the person. 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String NOTES = "notes"; 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The number of times a person has been contacted 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER</P> 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String TIMES_CONTACTED = "times_contacted"; 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The last time a person was contacted. 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER</P> 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LAST_TIME_CONTACTED = "last_time_contacted"; 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A custom ringtone associated with a person. Not always present. 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT (URI to the ringtone)</P> 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CUSTOM_RINGTONE = "custom_ringtone"; 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Whether the person should always be sent to voicemail. Not always 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * present. 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (0 for false, 1 for true)</P> 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SEND_TO_VOICEMAIL = "send_to_voicemail"; 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Is the contact starred? 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (boolean)</P> 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String STARRED = "starred"; 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The server version of the photo 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT (the version number portion of the photo URI)</P> 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PHOTO_VERSION = "photo_version"; 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This table contains people. 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class People implements BaseColumns, SyncConstValue, PeopleColumns, 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PhonesColumns, PresenceColumns { 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private People() {} 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for this table 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_URI = 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/people"); 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for filtering people by name. The filter 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * argument should be passed as an additional path segment after this URI. 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_FILTER_URI = 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/people/filter"); 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for the table that holds the deleted 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * contacts. 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri DELETED_CONTENT_URI = 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/deleted_people"); 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of {@link #CONTENT_URI} providing a directory of 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * people. 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_TYPE = "vnd.android.cursor.dir/person"; 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * person. 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/person"; 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The default sort order for this table 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DEFAULT_SORT_ORDER = People.NAME + " ASC"; 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ID of the persons preferred phone number. 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (foreign key to phones table on the _ID field)</P> 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PRIMARY_PHONE_ID = "primary_phone"; 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ID of the persons preferred email. 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (foreign key to contact_methods table on the 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * _ID field)</P> 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PRIMARY_EMAIL_ID = "primary_email"; 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ID of the persons preferred organization. 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (foreign key to organizations table on the 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * _ID field)</P> 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PRIMARY_ORGANIZATION_ID = "primary_organization"; 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Mark a person as having been contacted. 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param resolver the ContentResolver to use 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param personId the person who was contacted 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void markAsContacted(ContentResolver resolver, long personId) { 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri uri = ContentUris.withAppendedId(CONTENT_URI, personId); 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uri = Uri.withAppendedPath(uri, "update_contact_time"); 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ContentValues values = new ContentValues(); 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // There is a trigger in place that will update TIMES_CONTACTED when 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // LAST_TIME_CONTACTED is modified. 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project values.put(LAST_TIME_CONTACTED, System.currentTimeMillis()); 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project resolver.update(uri, values, null, null); 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Adds a person to the My Contacts group. 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param resolver the resolver to use 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param personId the person to add to the group 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the URI of the group membership row 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws IllegalStateException if the My Contacts group can't be found 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static Uri addToMyContactsGroup(ContentResolver resolver, long personId) { 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long groupId = 0; 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Cursor groupsCursor = resolver.query(Groups.CONTENT_URI, GROUPS_PROJECTION, 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Groups.SYSTEM_ID + "='" + Groups.GROUP_MY_CONTACTS + "'", null, null); 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (groupsCursor != null) { 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (groupsCursor.moveToFirst()) { 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project groupId = groupsCursor.getLong(0); 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project groupsCursor.close(); 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (groupId == 0) { 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new IllegalStateException("Failed to find the My Contacts group"); 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return addToGroup(resolver, personId, groupId); 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Adds a person to a group referred to by name. 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param resolver the resolver to use 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param personId the person to add to the group 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param groupName the name of the group to add the contact to 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the URI of the group membership row 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws IllegalStateException if the group can't be found 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static Uri addToGroup(ContentResolver resolver, long personId, String groupName) { 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long groupId = 0; 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Cursor groupsCursor = resolver.query(Groups.CONTENT_URI, GROUPS_PROJECTION, 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Groups.NAME + "=?", new String[] { groupName }, null); 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (groupsCursor != null) { 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (groupsCursor.moveToFirst()) { 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project groupId = groupsCursor.getLong(0); 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project groupsCursor.close(); 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (groupId == 0) { 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new IllegalStateException("Failed to find the My Contacts group"); 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return addToGroup(resolver, personId, groupId); 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Adds a person to a group. 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param resolver the resolver to use 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param personId the person to add to the group 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param groupId the group to add the person to 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the URI of the group membership row 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static Uri addToGroup(ContentResolver resolver, long personId, long groupId) { 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ContentValues values = new ContentValues(); 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project values.put(GroupMembership.PERSON_ID, personId); 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project values.put(GroupMembership.GROUP_ID, groupId); 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return resolver.insert(GroupMembership.CONTENT_URI, values); 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final String[] GROUPS_PROJECTION = new String[] { 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Groups._ID, 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Creates a new contacts and adds it to the "My Contacts" group. 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param resolver the ContentResolver to use 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param values the values to use when creating the contact 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the URI of the contact, or null if the operation fails 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static Uri createPersonInMyContactsGroup(ContentResolver resolver, 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ContentValues values) { 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri contactUri = resolver.insert(People.CONTENT_URI, values); 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (contactUri == null) { 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.e(TAG, "Failed to create the contact"); 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (addToMyContactsGroup(resolver, ContentUris.parseId(contactUri)) == null) { 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project resolver.delete(contactUri, null, null); 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return contactUri; 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static Cursor queryGroups(ContentResolver resolver, long person) { 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return resolver.query(GroupMembership.CONTENT_URI, null, "person=?", 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new String[]{String.valueOf(person)}, Groups.DEFAULT_SORT_ORDER); 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the photo for this person. data may be null 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param cr the ContentResolver to use 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param person the Uri of the person whose photo is to be updated 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param data the byte[] that represents the photo 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void setPhotoData(ContentResolver cr, Uri person, byte[] data) { 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri photoUri = Uri.withAppendedPath(person, Contacts.Photos.CONTENT_DIRECTORY); 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ContentValues values = new ContentValues(); 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project values.put(Photos.DATA, data); 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cr.update(photoUri, values, null, null); 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Opens an InputStream for the person's photo and returns the photo as a Bitmap. 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If the person's photo isn't present returns the placeholderImageResource instead. 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param person the person whose photo should be used 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static InputStream openContactPhotoInputStream(ContentResolver cr, Uri person) { 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri photoUri = Uri.withAppendedPath(person, Contacts.Photos.CONTENT_DIRECTORY); 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Cursor cursor = cr.query(photoUri, new String[]{Photos.DATA}, null, null, null); 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!cursor.moveToNext()) { 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project byte[] data = cursor.getBlob(0); 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (data == null) { 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ByteArrayInputStream(data); 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cursor.close(); 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Opens an InputStream for the person's photo and returns the photo as a Bitmap. 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If the person's photo isn't present returns the placeholderImageResource instead. 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param context the Context 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param person the person whose photo should be used 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param placeholderImageResource the image resource to use if the person doesn't 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * have a photo 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param options the decoding options, can be set to null 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static Bitmap loadContactPhoto(Context context, Uri person, 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int placeholderImageResource, BitmapFactory.Options options) { 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (person == null) { 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return loadPlaceholderPhoto(placeholderImageResource, context, options); 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project InputStream stream = openContactPhotoInputStream(context.getContentResolver(), person); 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bitmap bm = stream != null ? BitmapFactory.decodeStream(stream, null, options) : null; 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (bm == null) { 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bm = loadPlaceholderPhoto(placeholderImageResource, context, options); 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return bm; 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static Bitmap loadPlaceholderPhoto(int placeholderImageResource, Context context, 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BitmapFactory.Options options) { 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (placeholderImageResource == 0) { 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return BitmapFactory.decodeResource(context.getResources(), 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project placeholderImageResource, options); 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A sub directory of a single person that contains all of their Phones. 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class Phones implements BaseColumns, PhonesColumns, 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PeopleColumns { 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Phones() {} 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The directory twig for this sub-table 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_DIRECTORY = "phones"; 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The default sort order for this table 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "number ASC"; 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A subdirectory of a single person that contains all of their 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * ContactMethods. 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class ContactMethods 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project implements BaseColumns, ContactMethodsColumns, PeopleColumns { 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private ContactMethods() {} 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The directory twig for this sub-table 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_DIRECTORY = "contact_methods"; 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The default sort order for this table 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "data ASC"; 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extensions for a person 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static class Extensions implements BaseColumns, ExtensionsColumns { 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Extensions() {} 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The directory twig for this sub-table 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_DIRECTORY = "extensions"; 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The default sort order for this table 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "name ASC"; 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ID of the person this phone number is assigned to. 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (long)</P> 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PERSON_ID = "person"; 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Columns from the groups table. 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public interface GroupsColumns { 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The group name. 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String NAME = "name"; 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Notes about the group. 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String NOTES = "notes"; 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Whether this group should be synced if the SYNC_EVERYTHING settings is false 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for this group's account. 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (boolean)</P> 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SHOULD_SYNC = "should_sync"; 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ID of this group if it is a System Group, null otherwise. 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SYSTEM_ID = "system_id"; 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This table contains the groups for an account. 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class Groups 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project implements BaseColumns, SyncConstValue, GroupsColumns { 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Groups() {} 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for this table 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_URI = 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/groups"); 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for the table that holds the deleted 6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * groups. 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri DELETED_CONTENT_URI = 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/deleted_groups"); 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of {@link #CONTENT_URI} providing a directory of 6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * groups. 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroup"; 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * group. 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroup"; 6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The default sort order for this table 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DEFAULT_SORT_ORDER = NAME + " ASC"; 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String GROUP_ANDROID_STARRED = "Starred in Android"; 6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The "My Contacts" system group. 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String GROUP_MY_CONTACTS = "Contacts"; 6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Columns from the Phones table that other columns join into themselves. 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public interface PhonesColumns { 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The type of the the phone number. 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (one of the constants below)</P> 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String TYPE = "type"; 6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_CUSTOM = 0; 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_HOME = 1; 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_MOBILE = 2; 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_WORK = 3; 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_FAX_WORK = 4; 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_FAX_HOME = 5; 6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_PAGER = 6; 6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_OTHER = 7; 6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The user provided label for the phone number, only used if TYPE is TYPE_CUSTOM. 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LABEL = "label"; 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The phone number as the user entered it. 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String NUMBER = "number"; 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The normalized phone number 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String NUMBER_KEY = "number_key"; 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Whether this is the primary phone number 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (if set, non-0 means true)</P> 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ISPRIMARY = "isprimary"; 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This table stores phone numbers and a reference to the person that the 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * contact method belongs to. Phone numbers are stored separately from 6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * other contact methods to make caller ID lookup more efficient. 6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class Phones 6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project implements BaseColumns, PhonesColumns, PeopleColumns { 6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Phones() {} 6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final CharSequence getDisplayLabel(Context context, int type, 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CharSequence label, CharSequence[] labelArray) { 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CharSequence display = ""; 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (type != People.Phones.TYPE_CUSTOM) { 7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CharSequence[] labels = labelArray != null? labelArray 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project : context.getResources().getTextArray( 7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project com.android.internal.R.array.phoneTypes); 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = labels[type - 1]; 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ArrayIndexOutOfBoundsException e) { 7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = labels[People.Phones.TYPE_HOME - 1]; 7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!TextUtils.isEmpty(label)) { 7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = label; 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return display; 7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final CharSequence getDisplayLabel(Context context, int type, 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CharSequence label) { 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getDisplayLabel(context, type, label, null); 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for this table 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_URI = 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/phones"); 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for filtering phone numbers 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_FILTER_URL = 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/phones/filter"); 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of {@link #CONTENT_URI} providing a directory of 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * phones. 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_TYPE = "vnd.android.cursor.dir/phone"; 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * phone. 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone"; 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The default sort order for this table 7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "name ASC"; 7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ID of the person this phone number is assigned to. 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (long)</P> 7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PERSON_ID = "person"; 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class GroupMembership implements BaseColumns, GroupsColumns { 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private GroupMembership() {} 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for this table 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_URI = 7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/groupmembership"); 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for this table 7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri RAW_CONTENT_URI = 7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/groupmembershipraw"); 7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The directory twig for this sub-table 7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_DIRECTORY = "groupmembership"; 7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of {@link #CONTENT_URI} providing a directory of all 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * person groups. 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroupmembership"; 7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * person group. 7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_ITEM_TYPE = 7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "vnd.android.cursor.item/contactsgroupmembership"; 7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The default sort order for this table 7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "group_id ASC"; 8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The row id of the accounts group. 8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String GROUP_ID = "group_id"; 8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The sync id of the group. 8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String GROUP_SYNC_ID = "group_sync_id"; 8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The account of the group. 8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String GROUP_SYNC_ACCOUNT = "group_sync_account"; 8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The row id of the person. 8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PERSON_ID = "person"; 8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Columns from the ContactMethods table that other tables join into 8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * themseleves. 8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public interface ContactMethodsColumns { 8329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The kind of the the contact method. For example, email address, 8349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * postal address, etc. 8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (one of the values below)</P> 8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String KIND = "kind"; 8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The type of the contact method, must be one of the types below. 8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (one of the values below)</P> 8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String TYPE = "type"; 8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_CUSTOM = 0; 8459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_HOME = 1; 8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_WORK = 2; 8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_OTHER = 3; 8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The user defined label for the the contact method. 8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LABEL = "label"; 8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The data for the contact method. 8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DATA = "data"; 8609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Auxiliary data for the contact method. 8639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 8649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String AUX_DATA = "aux_data"; 8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Whether this is the primary organization 8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (if set, non-0 means true)</P> 8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ISPRIMARY = "isprimary"; 8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This table stores all non-phone contact methods and a reference to the 8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * person that the contact method belongs to. 8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class ContactMethods 8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project implements BaseColumns, ContactMethodsColumns, PeopleColumns { 8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The column with latitude data for postal locations 8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: REAL</P> 8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String POSTAL_LOCATION_LATITUDE = DATA; 8859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The column with longitude data for postal locations 8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: REAL</P> 8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String POSTAL_LOCATION_LONGITUDE = AUX_DATA; 8919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The predefined IM protocol types. The protocol can either be non-present, one 8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of these types, or a free-form string. These cases are encoded in the AUX_DATA 8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * column as: 8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * - null 8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * - pre:<an integer, one of the protocols below> 8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * - custom:<a string> 8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int PROTOCOL_AIM = 0; 9019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int PROTOCOL_MSN = 1; 9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int PROTOCOL_YAHOO = 2; 9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int PROTOCOL_SKYPE = 3; 9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int PROTOCOL_QQ = 4; 9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int PROTOCOL_GOOGLE_TALK = 5; 9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int PROTOCOL_ICQ = 6; 9079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int PROTOCOL_JABBER = 7; 9089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static String encodePredefinedImProtocol(int protocol) { 9109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "pre:" + protocol; 9119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static String encodeCustomImProtocol(String protocolString) { 9149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "custom:" + protocolString; 9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static Object decodeImProtocol(String encodedString) { 9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (encodedString == null) { 9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (encodedString.startsWith("pre:")) { 9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return Integer.parseInt(encodedString.substring(4)); 9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (encodedString.startsWith("custom:")) { 9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return encodedString.substring(7); 9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new IllegalArgumentException( 9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "the value is not a valid encoded protocol, " + encodedString); 9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This looks up the provider name defined in 9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.provider.Im.ProviderNames} from the predefined IM protocol id. 9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This is used for interacting with the IM application. 9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param protocol the protocol ID 9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the provider name the IM app uses for the given protocol, or null if no 9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * provider is defined for the given protocol 9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static String lookupProviderNameFromId(int protocol) { 9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (protocol) { 9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case PROTOCOL_GOOGLE_TALK: 9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return Im.ProviderNames.GTALK; 9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case PROTOCOL_AIM: 9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return Im.ProviderNames.AIM; 9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case PROTOCOL_MSN: 9519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return Im.ProviderNames.MSN; 9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case PROTOCOL_YAHOO: 9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return Im.ProviderNames.YAHOO; 9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case PROTOCOL_ICQ: 9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return Im.ProviderNames.ICQ; 9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case PROTOCOL_JABBER: 9579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return Im.ProviderNames.JABBER; 9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case PROTOCOL_SKYPE: 9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return Im.ProviderNames.SKYPE; 9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case PROTOCOL_QQ: 9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return Im.ProviderNames.QQ; 9629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private ContactMethods() {} 9709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final CharSequence getDisplayLabel(Context context, int kind, 9729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int type, CharSequence label) { 9739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CharSequence display = ""; 9749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (kind) { 9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case KIND_EMAIL: { 9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (type != People.ContactMethods.TYPE_CUSTOM) { 9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CharSequence[] labels = context.getResources().getTextArray( 9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project com.android.internal.R.array.emailAddressTypes); 9799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 9809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = labels[type - 1]; 9819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ArrayIndexOutOfBoundsException e) { 9829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = labels[ContactMethods.TYPE_HOME - 1]; 9839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 9859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!TextUtils.isEmpty(label)) { 9869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = label; 9879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 9909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case KIND_POSTAL: { 9939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (type != People.ContactMethods.TYPE_CUSTOM) { 9949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CharSequence[] labels = context.getResources().getTextArray( 9959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project com.android.internal.R.array.postalAddressTypes); 9969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 9979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = labels[type - 1]; 9989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ArrayIndexOutOfBoundsException e) { 9999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = labels[ContactMethods.TYPE_HOME - 1]; 10009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 10029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!TextUtils.isEmpty(label)) { 10039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = label; 10049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 10109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = context.getString(R.string.untitled); 10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return display; 10139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Add a longitude and latitude location to a postal address. 10179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param context the context to use when updating the database 10199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param postalId the address to update 10209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param latitude the latitude for the address 10219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param longitude the longitude for the address 10229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void addPostalLocation(Context context, long postalId, 10249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project double latitude, double longitude) { 10259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final ContentResolver resolver = context.getContentResolver(); 10269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Insert the location 10279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ContentValues values = new ContentValues(2); 10289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project values.put(POSTAL_LOCATION_LATITUDE, latitude); 10299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project values.put(POSTAL_LOCATION_LONGITUDE, longitude); 10309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri loc = resolver.insert(CONTENT_URI, values); 10319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long locId = ContentUris.parseId(loc); 10329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Update the postal address 10349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project values.clear(); 10359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project values.put(AUX_DATA, locId); 10369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project resolver.update(ContentUris.withAppendedId(CONTENT_URI, postalId), values, null, null); 10379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for this table 10419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_URI = 10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/contact_methods"); 10449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for sub-directory of e-mail addresses. 10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_EMAIL_URI = 10499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/contact_methods/email"); 10509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of {@link #CONTENT_URI} providing a directory of 10539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * phones. 10549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact-methods"; 10569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of a {@link #CONTENT_EMAIL_URI} sub-directory of\ 10599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * multiple {@link Contacts#KIND_EMAIL} entries. 10609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_EMAIL_TYPE = "vnd.android.cursor.dir/email"; 10629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of a {@link #CONTENT_EMAIL_URI} sub-directory of\ 10659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * multiple {@link Contacts#KIND_POSTAL} entries. 10669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_POSTAL_TYPE = "vnd.android.cursor.dir/postal-address"; 10689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} sub-directory of a single 10719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Contacts#KIND_EMAIL} entry. 10729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_EMAIL_ITEM_TYPE = "vnd.android.cursor.item/email"; 10749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} sub-directory of a single 10779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Contacts#KIND_POSTAL} entry. 10789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_POSTAL_ITEM_TYPE 10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = "vnd.android.cursor.item/postal-address"; 10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} sub-directory of a single 10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Contacts#KIND_IM} entry. 10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_IM_ITEM_TYPE = "vnd.android.cursor.item/jabber-im"; 10879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The default sort order for this table 10909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "name ASC"; 10929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ID of the person this contact method is assigned to. 10959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (long)</P> 10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PERSON_ID = "person"; 10989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The IM presence columns with some contacts specific columns mixed in. 11029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public interface PresenceColumns extends Im.CommonPresenceColumns { 11049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The IM service the presence is coming from. Formatted using either 11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Contacts.ContactMethods#encodePredefinedImProtocol} or 11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Contacts.ContactMethods#encodeCustomImProtocol}. 11089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: STRING</P> 11099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String IM_PROTOCOL = "im_protocol"; 11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The IM handle the presence item is for. The handle is scoped to 11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the {@link #IM_PROTOCOL}. 11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: STRING</P> 11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String IM_HANDLE = "im_handle"; 11189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The IM account for the local user that the presence data came from. 11219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: STRING</P> 11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String IM_ACCOUNT = "im_account"; 11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Contains presence information about contacts. 11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 11299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class Presence 11319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project implements BaseColumns, PresenceColumns, PeopleColumns { 11329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for this table 11349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_URI = 11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/presence"); 11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ID of the person this presence item is assigned to. 11409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (long)</P> 11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PERSON_ID = "person"; 11439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the resource ID for the proper presence icon. 11469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param status the status to get the icon for 11489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the resource ID for the proper presence icon 11499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int getPresenceIconResourceId(int status) { 11519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (status) { 11529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Contacts.People.AVAILABLE: 11539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return com.android.internal.R.drawable.presence_online; 11549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Contacts.People.IDLE: 11569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Contacts.People.AWAY: 11579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return com.android.internal.R.drawable.presence_away; 11589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Contacts.People.DO_NOT_DISTURB: 11609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return com.android.internal.R.drawable.presence_busy; 11619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Contacts.People.INVISIBLE: 11639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return com.android.internal.R.drawable.presence_invisible; 11649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Contacts.People.OFFLINE: 11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 11679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return com.android.internal.R.drawable.presence_offline; 11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets a presence icon to the proper graphic 11739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param icon the icon to to set 11759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param serverStatus that status 11769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final void setPresenceIcon(ImageView icon, int serverStatus) { 11789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project icon.setImageResource(getPresenceIconResourceId(serverStatus)); 11799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Columns from the Organizations table that other columns join into themselves. 11849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public interface OrganizationColumns { 11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The type of the the phone number. 11889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (one of the constants below)</P> 11899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String TYPE = "type"; 11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_CUSTOM = 0; 11939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_WORK = 1; 11949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_OTHER = 2; 11959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The user provided label, only used if TYPE is TYPE_CUSTOM. 11989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 11999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LABEL = "label"; 12019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The name of the company for this organization. 12049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 12059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String COMPANY = "company"; 12079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The title within this organization. 12109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 12119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String TITLE = "title"; 12139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The person this organization is tied to. 12169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 12179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PERSON_ID = "person"; 12199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Whether this is the primary organization 12229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (if set, non-0 means true)</P> 12239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ISPRIMARY = "isprimary"; 12259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A sub directory of a single person that contains all of their Phones. 12299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class Organizations implements BaseColumns, OrganizationColumns { 12319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 12339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Organizations() {} 12359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final CharSequence getDisplayLabel(Context context, int type, 12379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CharSequence label) { 12389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CharSequence display = ""; 12399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (type != TYPE_CUSTOM) { 12419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CharSequence[] labels = context.getResources().getTextArray( 12429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project com.android.internal.R.array.organizationTypes); 12439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 12449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = labels[type - 1]; 12459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ArrayIndexOutOfBoundsException e) { 12469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = labels[Organizations.TYPE_WORK - 1]; 12479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 12499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!TextUtils.isEmpty(label)) { 12509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project display = label; 12519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return display; 12549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for this table 12589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_URI = 12609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/organizations"); 12619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The directory twig for this sub-table 12649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_DIRECTORY = "organizations"; 12669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The default sort order for this table 12699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "company, title, isprimary ASC"; 12719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Columns from the Photos table that other columns join into themselves. 12759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public interface PhotosColumns { 12779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The _SYNC_VERSION of the photo that was last downloaded 12799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 12809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LOCAL_VERSION = "local_version"; 12829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The person this photo is associated with. 12859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 12869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PERSON_ID = "person"; 12889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * non-zero if a download is required and the photo isn't marked as a bad resource. 12919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You must specify this in the columns in order to use it in the where clause. 12929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER(boolean)</P> 12939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DOWNLOAD_REQUIRED = "download_required"; 12959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * non-zero if this photo is known to exist on the server 12989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER(boolean)</P> 12999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXISTS_ON_SERVER = "exists_on_server"; 13019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Contains the description of the upload or download error from 13049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the previous attempt. If null then the previous attempt succeeded. 13059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 13069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SYNC_ERROR = "sync_error"; 13089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The image data, or null if there is no image. 13119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: BLOB</P> 13129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DATA = "data"; 13149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The photos over all of the people 13199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class Photos implements BaseColumns, PhotosColumns, SyncConstValue { 13219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 13239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Photos() {} 13259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for this table 13289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_URI = 13309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/photos"); 13319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The directory twig for this sub-table 13349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_DIRECTORY = "photo"; 13369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The default sort order for this table 13399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "person ASC"; 13419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public interface ExtensionsColumns { 13449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The name of this extension. May not be null. There may be at most one row for each name. 13469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 13479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String NAME = "name"; 13499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The value of this extension. May not be null. 13529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: TEXT</P> 13539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String VALUE = "value"; 13559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extensions for a person 13599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class Extensions implements BaseColumns, ExtensionsColumns { 13619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no public constructor since this is a utility class 13639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Extensions() {} 13659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The content:// style URL for this table 13689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Uri CONTENT_URI = 13709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Uri.parse("content://contacts/extensions"); 13719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of {@link #CONTENT_URI} providing a directory of 13749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * phones. 13759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_extensions"; 13779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 13809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * phone. 13819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_extensions"; 13839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The default sort order for this table 13859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String DEFAULT_SORT_ORDER = "person, name ASC"; 13879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ID of the person this phone number is assigned to. 13909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: INTEGER (long)</P> 13919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PERSON_ID = "person"; 13939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Contains helper classes used to create or manage {@link android.content.Intent Intents} 13979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * that involve contacts. 13989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class Intents { 14009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This is the intent that is fired when a search suggestion is clicked on. 14029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SEARCH_SUGGESTION_CLICKED = 14049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED"; 14059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This is the intent that is fired when a search suggestion for dialing a number 14089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is clicked on. 14099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = 14119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED"; 14129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This is the intent that is fired when a search suggestion for creating a contact 14159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is clicked on. 14169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = 14189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED"; 14199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Starts an Activity that lets the user pick a contact to attach an image to. 14229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * After picking the contact it launches the image cropper in face detection mode. 14239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ATTACH_IMAGE = 14259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "com.android.contacts.action.ATTACH_IMAGE"; 14269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intents related to the Contacts app UI. 14299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class UI { 14319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The action for the default contacts list tab. 14339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LIST_DEFAULT = 14359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "com.android.contacts.action.LIST_DEFAULT"; 14369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The action for the contacts list tab. 14399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LIST_GROUP_ACTION = 14419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "com.android.contacts.action.LIST_GROUP"; 14429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * When in LIST_GROUP_ACTION mode, this is the group to display. 14459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String GROUP_NAME_EXTRA_KEY = "com.android.contacts.extra.GROUP"; 14479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The action for the all contacts list tab. 14509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LIST_ALL_CONTACTS_ACTION = 14529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "com.android.contacts.action.LIST_ALL_CONTACTS"; 14539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The action for the contacts with phone numbers list tab. 14569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LIST_CONTACTS_WITH_PHONES_ACTION = 14589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "com.android.contacts.action.LIST_CONTACTS_WITH_PHONES"; 14599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The action for the starred contacts list tab. 14629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LIST_STARRED_ACTION = 14649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "com.android.contacts.action.LIST_STARRED"; 14659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The action for the frequent contacts list tab. 14689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LIST_FREQUENT_ACTION = 14709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "com.android.contacts.action.LIST_FREQUENT"; 14719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The action for the "strequent" contacts list tab. It first lists the starred 14749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * contacts in alphabetical order and then the frequent contacts in descending 14759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * order of the number of times they have been contacted. 14769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LIST_STREQUENT_ACTION = 14789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "com.android.contacts.action.LIST_STREQUENT"; 14799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A key for to be used as an intent extra to set the activity 14829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * title to a custom String value. 14839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String TITLE_EXTRA_KEY = 14859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "com.android.contacts.extra.TITLE_EXTRA"; 14869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Activity Action: Display a filtered list of contacts 14899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 14909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Input: Extra field {@link #FILTER_TEXT_EXTRA_KEY} is the text to use for 14919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * filtering 14929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 14939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Output: Nothing. 14949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 14959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String FILTER_CONTACTS_ACTION = 14969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "com.android.contacts.action.FILTER_CONTACTS"; 14979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Used as an int extra field in {@link #FILTER_CONTACTS_ACTION} 15009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * intents to supply the text on which to filter. 15019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String FILTER_TEXT_EXTRA_KEY = 15039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "com.android.contacts.extra.FILTER_TEXT"; 15049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Convenience class that contains string constants used 15089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to create contact {@link android.content.Intent Intents}. 15099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final class Insert { 15119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** The action code to use when adding a contact */ 15129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ACTION = Intent.ACTION_INSERT; 15139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If present, forces a bypass of quick insert mode. 15169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String FULL_MODE = "full_mode"; 15189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the contact name. 15219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 15229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String NAME = "name"; 15249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the contact phonetic name. 15279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 15289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PHONETIC_NAME = "phonetic_name"; 15309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the contact company. 15339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 15349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String COMPANY = "company"; 15369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the contact job title. 15399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 15409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String JOB_TITLE = "job_title"; 15429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the contact notes. 15459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 15469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String NOTES = "notes"; 15489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the contact phone number. 15519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 15529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PHONE = "phone"; 15549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the contact phone number type. 15579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns}, 15589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or a string specifying a custom label.</P> 15599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PHONE_TYPE = "phone_type"; 15619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the phone isprimary flag. 15649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: boolean</P> 15659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String PHONE_ISPRIMARY = "phone_isprimary"; 15679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for an optional second contact phone number. 15709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 15719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SECONDARY_PHONE = "secondary_phone"; 15739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for an optional second contact phone number type. 15769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns}, 15779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or a string specifying a custom label.</P> 15789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SECONDARY_PHONE_TYPE = "secondary_phone_type"; 15809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for an optional third contact phone number. 15839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 15849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String TERTIARY_PHONE = "tertiary_phone"; 15869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for an optional third contact phone number type. 15899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns}, 15909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or a string specifying a custom label.</P> 15919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String TERTIARY_PHONE_TYPE = "tertiary_phone_type"; 15939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the contact email address. 15969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 15979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EMAIL = "email"; 15999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the contact email type. 16029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} 16039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or a string specifying a custom label.</P> 16049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EMAIL_TYPE = "email_type"; 16069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the email isprimary flag. 16099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: boolean</P> 16109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EMAIL_ISPRIMARY = "email_isprimary"; 16129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for an optional second contact email address. 16159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 16169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SECONDARY_EMAIL = "secondary_email"; 16189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for an optional second contact email type. 16219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} 16229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or a string specifying a custom label.</P> 16239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String SECONDARY_EMAIL_TYPE = "secondary_email_type"; 16259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for an optional third contact email address. 16289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 16299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String TERTIARY_EMAIL = "tertiary_email"; 16319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for an optional third contact email type. 16349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} 16359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or a string specifying a custom label.</P> 16369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String TERTIARY_EMAIL_TYPE = "tertiary_email_type"; 16389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the contact postal address. 16419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 16429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String POSTAL = "postal"; 16449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the contact postal address type. 16479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} 16489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or a string specifying a custom label.</P> 16499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String POSTAL_TYPE = "postal_type"; 16519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the postal isprimary flag. 16549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: boolean</P> 16559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String POSTAL_ISPRIMARY = "postal_isprimary"; 16579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for an IM handle. 16609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: String</P> 16619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String IM_HANDLE = "im_handle"; 16639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the IM protocol 16669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: the result of {@link Contacts.ContactMethods#encodePredefinedImProtocol} 16679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or {@link Contacts.ContactMethods#encodeCustomImProtocol}.</P> 16689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String IM_PROTOCOL = "im_protocol"; 16709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The extra field for the IM isprimary flag. 16739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <P>Type: boolean</P> 16749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String IM_ISPRIMARY = "im_isprimary"; 16769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1679