Contacts.java revision dc2da5fd922fc8de0ffcb22df3622b57ed777732
154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/*
254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project *
454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * you may not use this file except in compliance with the License.
654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * You may obtain a copy of the License at
754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project *
854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project *
1054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * See the License for the specific language governing permissions and
1454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * limitations under the License.
1554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */
1654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
1754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectpackage android.provider;
1854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
19f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Projectimport com.android.internal.R;
20f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
2154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.ContentResolver;
2254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.ContentUris;
2354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.ContentValues;
2454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.Context;
2554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.Intent;
2654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.Cursor;
2754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.graphics.Bitmap;
2854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.graphics.BitmapFactory;
2954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.net.Uri;
3054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.text.TextUtils;
3154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.util.Log;
3254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.widget.ImageView;
33d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintanaimport android.accounts.Account;
3454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
3554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.io.ByteArrayInputStream;
3654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.io.InputStream;
3754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
3854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/**
3954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * The Contacts provider stores all information about contacts.
4054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */
4154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectpublic class Contacts {
4254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    private static final String TAG = "Contacts";
43dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
4454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final String AUTHORITY = "contacts";
4554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
4654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
4754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * The content:// style URL for this provider
4854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
4954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final Uri CONTENT_URI =
5054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        Uri.parse("content://" + AUTHORITY);
5154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
5254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /** Signifies an email address row that is stored in the ContactMethods table */
5354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final int KIND_EMAIL = 1;
5454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /** Signifies a postal address row that is stored in the ContactMethods table */
5554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final int KIND_POSTAL = 2;
5654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /** Signifies an IM address row that is stored in the ContactMethods table */
5754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final int KIND_IM = 3;
5854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /** Signifies an Organization row that is stored in the Organizations table */
5954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final int KIND_ORGANIZATION = 4;
6054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /** Signifies an Phone row that is stored in the Phones table */
6154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final int KIND_PHONE = 5;
6254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
6354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
6454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * no public constructor since this is a utility class
6554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
6654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    private Contacts() {}
6754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
6854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
6954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * Columns from the Settings table that other columns join into themselves.
7054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
7154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public interface SettingsColumns {
7254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
7354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The _SYNC_ACCOUNT to which this setting corresponds. This may be null.
7454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
7554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
7654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String _SYNC_ACCOUNT = "_sync_account";
7754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
7854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
79d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana         * The _SYNC_ACCOUNT_TYPE to which this setting corresponds. This may be null.
80d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana         * <P>Type: TEXT</P>
81d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana         */
82d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana        public static final String _SYNC_ACCOUNT_TYPE = "_sync_account_type";
83d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana
84d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana        /**
8554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The key of this setting.
8654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
8754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
8854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String KEY = "key";
8954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
9054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
9154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The value of this setting.
9254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
9354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
9454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String VALUE = "value";
9554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
9654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
9754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
9854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * The settings over all of the people
9954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
10054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final class Settings implements BaseColumns, SettingsColumns {
10154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
10254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * no public constructor since this is a utility class
10354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
10454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        private Settings() {}
10554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
10654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
10754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for this table
10854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
10954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_URI =
11054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/settings");
11154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
11254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
11354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The directory twig for this sub-table
11454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
11554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_DIRECTORY = "settings";
11654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
11754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
11854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The default sort order for this table
11954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
12054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DEFAULT_SORT_ORDER = "key ASC";
12154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
12254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
12354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * A setting that is used to indicate if we should sync down all groups for the
12454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * specified account. For this setting the _SYNC_ACCOUNT column must be set.
12554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * If this isn't set then we will only sync the groups whose SHOULD_SYNC column
12654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * is set to true.
12754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <p>
12854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * This is a boolean setting. It is true if it is set and it is anything other than the
12954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * emptry string or "0".
13054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
13154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String SYNC_EVERYTHING = "syncEverything";
13254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
13354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static String getSetting(ContentResolver cr, String account, String key) {
13454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // For now we only support a single account and the UI doesn't know what
13554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // the account name is, so we're using a global setting for SYNC_EVERYTHING.
13654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // Some day when we add multiple accounts to the UI this should honor the account
13754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // that was asked for.
13854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            String selectString;
13954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            String[] selectArgs;
14054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (false) {
14154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                selectString = (account == null)
14254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        ? "_sync_account is null AND key=?"
14354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        : "_sync_account=? AND key=?";
144d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana//                : "_sync_account=? AND _sync_account_type=? AND key=?";
14554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                selectArgs = (account == null)
14654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                ? new String[]{key}
14754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                : new String[]{account, key};
14854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            } else {
14954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                selectString = "key=?";
15054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                selectArgs = new String[] {key};
15154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
15254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Cursor cursor = cr.query(Settings.CONTENT_URI, new String[]{VALUE},
15354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    selectString, selectArgs, null);
15454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            try {
15554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                if (!cursor.moveToNext()) return null;
15654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                return cursor.getString(0);
15754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            } finally {
15854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                cursor.close();
15954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
16054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
16154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
16254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static void setSetting(ContentResolver cr, String account, String key,
16354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                String value) {
16454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            ContentValues values = new ContentValues();
16554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // For now we only support a single account and the UI doesn't know what
16654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // the account name is, so we're using a global setting for SYNC_EVERYTHING.
16754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // Some day when we add multiple accounts to the UI this should honor the account
16854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // that was asked for.
169d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana            //values.put(_SYNC_ACCOUNT, account.mName);
170d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana            //values.put(_SYNC_ACCOUNT_TYPE, account.mType);
17154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            values.put(KEY, key);
17254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            values.put(VALUE, value);
17354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            cr.update(Settings.CONTENT_URI, values, null, null);
17454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
17554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
17654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
17754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
17854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * Columns from the People table that other tables join into themselves.
17954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
18054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public interface PeopleColumns {
18154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
182b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project         * The person's name.
18354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
18454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
18554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String NAME = "name";
18654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
18754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
188b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project         * Phonetic equivalent of the person's name, in a locale-dependent
189b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project         * character set (e.g. hiragana for Japanese).
190b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project         * Used for pronunciation and/or collation in some languages.
191b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project         * <p>Type: TEXT</P>
192b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project         */
193b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project        public static final String PHONETIC_NAME = "phonetic_name";
194dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
195b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project        /**
19654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The display name. If name is not null name, else if number is not null number,
19754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * else if email is not null email.
19854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
19954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
20054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DISPLAY_NAME = "display_name";
20154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
20254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
203ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project         * The field for sorting list phonetically. The content of this field
204ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project         * may not be human readable but phonetically sortable.
205ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project         * <P>Type: TEXT</p>
206ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project         * @hide Used only in Contacts application for now.
207ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project         */
208ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project        public static final String SORT_STRING = "sort_string";
209dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
210ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project        /**
21154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Notes about the person.
21254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
21354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
21454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String NOTES = "notes";
21554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
21654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
21754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The number of times a person has been contacted
21854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER</P>
21954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
22054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String TIMES_CONTACTED = "times_contacted";
22154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
22254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
22354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The last time a person was contacted.
22454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER</P>
22554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
22654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String LAST_TIME_CONTACTED = "last_time_contacted";
22754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
22854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
22954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * A custom ringtone associated with a person. Not always present.
23054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT (URI to the ringtone)</P>
23154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
23254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CUSTOM_RINGTONE = "custom_ringtone";
23354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
23454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
23554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Whether the person should always be sent to voicemail. Not always
23654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * present.
23754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (0 for false, 1 for true)</P>
23854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
23954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String SEND_TO_VOICEMAIL = "send_to_voicemail";
24054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
24154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
24254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Is the contact starred?
24354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (boolean)</P>
24454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
24554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String STARRED = "starred";
24654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
24754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
24854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The server version of the photo
24954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT (the version number portion of the photo URI)</P>
25054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
251dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar        public static final String PHOTO_VERSION = "photo_version";
25254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
25354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
25454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
25554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * This table contains people.
25654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
25754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final class People implements BaseColumns, SyncConstValue, PeopleColumns,
25854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            PhonesColumns, PresenceColumns {
25954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
26054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * no public constructor since this is a utility class
26154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
26254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        private People() {}
26354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
26454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
26554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for this table
26654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
26754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_URI =
26854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/people");
26954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
27054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
27154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for filtering people by name. The filter
27254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * argument should be passed as an additional path segment after this URI.
27354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
27454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_FILTER_URI =
27554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/people/filter");
27654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
27754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
27854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for the table that holds the deleted
27954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * contacts.
28054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
28154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri DELETED_CONTENT_URI =
28254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/deleted_people");
28354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
28454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
2855104518fd7db24b0757be336092c94439e847e36Jeffrey Sharkey         * The content:// style URL for filtering people that have a specific
2865104518fd7db24b0757be336092c94439e847e36Jeffrey Sharkey         * E-mail or IM address. The filter argument should be passed as an
2875104518fd7db24b0757be336092c94439e847e36Jeffrey Sharkey         * additional path segment after this URI. This matches any people with
2885104518fd7db24b0757be336092c94439e847e36Jeffrey Sharkey         * at least one E-mail or IM {@link ContactMethods} that match the
2895104518fd7db24b0757be336092c94439e847e36Jeffrey Sharkey         * filter.
290dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar         *
291935ae463d495d41155e27feb849768ad2b8b16dbDianne Hackborn         * Not exposed because we expect significant changes in the contacts
292935ae463d495d41155e27feb849768ad2b8b16dbDianne Hackborn         * schema and do not want to have to support this.
293935ae463d495d41155e27feb849768ad2b8b16dbDianne Hackborn         * @hide
2945104518fd7db24b0757be336092c94439e847e36Jeffrey Sharkey         */
2955104518fd7db24b0757be336092c94439e847e36Jeffrey Sharkey        public static final Uri WITH_EMAIL_OR_IM_FILTER_URI =
2965104518fd7db24b0757be336092c94439e847e36Jeffrey Sharkey            Uri.parse("content://contacts/people/with_email_or_im_filter");
297dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
2985104518fd7db24b0757be336092c94439e847e36Jeffrey Sharkey        /**
29954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of {@link #CONTENT_URI} providing a directory of
30054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * people.
30154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
30254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/person";
30354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
30454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
30554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of a {@link #CONTENT_URI} subdirectory of a single
30654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * person.
30754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
30854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/person";
30954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
31054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
31154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The default sort order for this table
31254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
31354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DEFAULT_SORT_ORDER = People.NAME + " ASC";
31454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
31554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
31654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The ID of the persons preferred phone number.
31754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (foreign key to phones table on the _ID field)</P>
31854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
31954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String PRIMARY_PHONE_ID = "primary_phone";
32054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
32154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
32254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The ID of the persons preferred email.
32354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (foreign key to contact_methods table on the
32454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * _ID field)</P>
32554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
32654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String PRIMARY_EMAIL_ID = "primary_email";
32754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
32854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
32954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The ID of the persons preferred organization.
33054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (foreign key to organizations table on the
33154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * _ID field)</P>
33254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
33354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String PRIMARY_ORGANIZATION_ID = "primary_organization";
33454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
33554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
33654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Mark a person as having been contacted.
33754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         *
33854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param resolver the ContentResolver to use
33954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param personId the person who was contacted
34054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
34154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static void markAsContacted(ContentResolver resolver, long personId) {
34254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri uri = ContentUris.withAppendedId(CONTENT_URI, personId);
34354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            uri = Uri.withAppendedPath(uri, "update_contact_time");
34454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            ContentValues values = new ContentValues();
34554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // There is a trigger in place that will update TIMES_CONTACTED when
34654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // LAST_TIME_CONTACTED is modified.
34754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            values.put(LAST_TIME_CONTACTED, System.currentTimeMillis());
34854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            resolver.update(uri, values, null, null);
34954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
35054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
35154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
3526e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa         * @hide Used in vCard parser code.
35354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
3546e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa        public static long tryGetMyContactsGroupId(ContentResolver resolver) {
35554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Cursor groupsCursor = resolver.query(Groups.CONTENT_URI, GROUPS_PROJECTION,
35654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    Groups.SYSTEM_ID + "='" + Groups.GROUP_MY_CONTACTS + "'", null, null);
35754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (groupsCursor != null) {
35854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                try {
35954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    if (groupsCursor.moveToFirst()) {
3606e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa                        return groupsCursor.getLong(0);
36154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    }
36254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                } finally {
36354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    groupsCursor.close();
36454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
36554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
3666e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa            return 0;
3676e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa        }
36854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
3696e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa        /**
3706e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa         * Adds a person to the My Contacts group.
3716e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa         *
3726e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa         * @param resolver the resolver to use
3736e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa         * @param personId the person to add to the group
3746e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa         * @return the URI of the group membership row
3756e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa         * @throws IllegalStateException if the My Contacts group can't be found
3766e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa         */
3776e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa        public static Uri addToMyContactsGroup(ContentResolver resolver, long personId) {
3786e9610e1dba59bf708b45e0039856d70e6b9768bDaisuke Miyakawa            long groupId = tryGetMyContactsGroupId(resolver);
37954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (groupId == 0) {
38054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                throw new IllegalStateException("Failed to find the My Contacts group");
38154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
382dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
38354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return addToGroup(resolver, personId, groupId);
38454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
38554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
38654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
38754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Adds a person to a group referred to by name.
388dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar         *
38954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param resolver the resolver to use
39054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param personId the person to add to the group
39154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param groupName the name of the group to add the contact to
39254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @return the URI of the group membership row
39354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @throws IllegalStateException if the group can't be found
39454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
39554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static Uri addToGroup(ContentResolver resolver, long personId, String groupName) {
39654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            long groupId = 0;
39754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Cursor groupsCursor = resolver.query(Groups.CONTENT_URI, GROUPS_PROJECTION,
39854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    Groups.NAME + "=?", new String[] { groupName }, null);
39954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (groupsCursor != null) {
40054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                try {
40154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    if (groupsCursor.moveToFirst()) {
40254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        groupId = groupsCursor.getLong(0);
40354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    }
40454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                } finally {
40554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    groupsCursor.close();
40654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
40754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
40854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
40954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (groupId == 0) {
41054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                throw new IllegalStateException("Failed to find the My Contacts group");
41154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
412dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
41354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return addToGroup(resolver, personId, groupId);
41454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
41554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
41654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
41754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Adds a person to a group.
418dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar         *
41954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param resolver the resolver to use
42054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param personId the person to add to the group
42154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param groupId the group to add the person to
42254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @return the URI of the group membership row
42354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
42454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static Uri addToGroup(ContentResolver resolver, long personId, long groupId) {
42554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            ContentValues values = new ContentValues();
42654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            values.put(GroupMembership.PERSON_ID, personId);
42754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            values.put(GroupMembership.GROUP_ID, groupId);
42854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return resolver.insert(GroupMembership.CONTENT_URI, values);
42954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
430dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
43154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        private static final String[] GROUPS_PROJECTION = new String[] {
43254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Groups._ID,
43354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        };
43454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
43554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
43654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Creates a new contacts and adds it to the "My Contacts" group.
437dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar         *
43854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param resolver the ContentResolver to use
43954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param values the values to use when creating the contact
44054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @return the URI of the contact, or null if the operation fails
44154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
44254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static Uri createPersonInMyContactsGroup(ContentResolver resolver,
44354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                ContentValues values) {
44454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
44554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri contactUri = resolver.insert(People.CONTENT_URI, values);
44654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (contactUri == null) {
44754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                Log.e(TAG, "Failed to create the contact");
44854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                return null;
44954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
45054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
45154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (addToMyContactsGroup(resolver, ContentUris.parseId(contactUri)) == null) {
45254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                resolver.delete(contactUri, null, null);
45354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                return null;
45454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
45554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return contactUri;
45654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
45754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
45854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static Cursor queryGroups(ContentResolver resolver, long person) {
45954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return resolver.query(GroupMembership.CONTENT_URI, null, "person=?",
46054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    new String[]{String.valueOf(person)}, Groups.DEFAULT_SORT_ORDER);
46154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
46254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
46354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
46454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Set the photo for this person. data may be null
46554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param cr the ContentResolver to use
46654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param person the Uri of the person whose photo is to be updated
46754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param data the byte[] that represents the photo
46854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
46954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static void setPhotoData(ContentResolver cr, Uri person, byte[] data) {
47054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri photoUri = Uri.withAppendedPath(person, Contacts.Photos.CONTENT_DIRECTORY);
47154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            ContentValues values = new ContentValues();
47254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            values.put(Photos.DATA, data);
47354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            cr.update(photoUri, values, null, null);
47454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
475dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
47654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
47754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Opens an InputStream for the person's photo and returns the photo as a Bitmap.
47854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * If the person's photo isn't present returns the placeholderImageResource instead.
47954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param person the person whose photo should be used
48054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
48154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static InputStream openContactPhotoInputStream(ContentResolver cr, Uri person) {
48254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri photoUri = Uri.withAppendedPath(person, Contacts.Photos.CONTENT_DIRECTORY);
48354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Cursor cursor = cr.query(photoUri, new String[]{Photos.DATA}, null, null, null);
48454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            try {
48554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                if (!cursor.moveToNext()) {
48654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    return null;
48754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
48854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                byte[] data = cursor.getBlob(0);
48954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                if (data == null) {
49054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    return null;
49154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
49254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                return new ByteArrayInputStream(data);
49354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            } finally {
49454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                cursor.close();
49554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
49654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
49754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
49854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
49954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Opens an InputStream for the person's photo and returns the photo as a Bitmap.
50054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * If the person's photo isn't present returns the placeholderImageResource instead.
50154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param context the Context
50254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param person the person whose photo should be used
50354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param placeholderImageResource the image resource to use if the person doesn't
50454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         *   have a photo
50554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param options the decoding options, can be set to null
50654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
50754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static Bitmap loadContactPhoto(Context context, Uri person,
50854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                int placeholderImageResource, BitmapFactory.Options options) {
50954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (person == null) {
51054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                return loadPlaceholderPhoto(placeholderImageResource, context, options);
51154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
51254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
51354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            InputStream stream = openContactPhotoInputStream(context.getContentResolver(), person);
51454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Bitmap bm = stream != null ? BitmapFactory.decodeStream(stream, null, options) : null;
51554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (bm == null) {
51654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                bm = loadPlaceholderPhoto(placeholderImageResource, context, options);
51754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
51854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return bm;
51954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
52054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
52154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        private static Bitmap loadPlaceholderPhoto(int placeholderImageResource, Context context,
52254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                BitmapFactory.Options options) {
52354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (placeholderImageResource == 0) {
52454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                return null;
52554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
52654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return BitmapFactory.decodeResource(context.getResources(),
52754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    placeholderImageResource, options);
52854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
52954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
53054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
53154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * A sub directory of a single person that contains all of their Phones.
53254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
53354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final class Phones implements BaseColumns, PhonesColumns,
53454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                PeopleColumns {
53554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
53654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * no public constructor since this is a utility class
53754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
53854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            private Phones() {}
53954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
54054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
54154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The directory twig for this sub-table
54254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
54354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String CONTENT_DIRECTORY = "phones";
54454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
54554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
54654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The default sort order for this table
54754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
54854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String DEFAULT_SORT_ORDER = "number ASC";
54954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
55054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
55154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
55254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * A subdirectory of a single person that contains all of their
55354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * ContactMethods.
55454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
55554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final class ContactMethods
55654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                implements BaseColumns, ContactMethodsColumns, PeopleColumns {
55754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
55854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * no public constructor since this is a utility class
55954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
56054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            private ContactMethods() {}
56154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
56254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
56354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The directory twig for this sub-table
56454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
56554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String CONTENT_DIRECTORY = "contact_methods";
56654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
56754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
56854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The default sort order for this table
56954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
57054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String DEFAULT_SORT_ORDER = "data ASC";
57154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
57254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
57354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
57454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The extensions for a person
57554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
57654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static class Extensions implements BaseColumns, ExtensionsColumns {
57754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
57854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * no public constructor since this is a utility class
57954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
58054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            private Extensions() {}
58154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
58254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
58354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The directory twig for this sub-table
58454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
58554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String CONTENT_DIRECTORY = "extensions";
58654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
58754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
58854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The default sort order for this table
58954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
59054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String DEFAULT_SORT_ORDER = "name ASC";
59154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
59254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
59354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The ID of the person this phone number is assigned to.
59454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: INTEGER (long)</P>
59554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
59654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String PERSON_ID = "person";
59754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
59854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
59954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
60054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
60154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * Columns from the groups table.
60254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
60354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public interface GroupsColumns {
60454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
60554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The group name.
60654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
60754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
60854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String NAME = "name";
60954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
61054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
61154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Notes about the group.
61254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
61354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
61454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String NOTES = "notes";
61554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
61654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
61754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Whether this group should be synced if the SYNC_EVERYTHING settings is false
61854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * for this group's account.
61954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (boolean)</P>
62054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
62154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String SHOULD_SYNC = "should_sync";
62254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
62354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
62454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The ID of this group if it is a System Group, null otherwise.
62554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
62654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
62754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String SYSTEM_ID = "system_id";
62854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
62954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
63054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
63154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * This table contains the groups for an account.
63254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
63354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final class Groups
63454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            implements BaseColumns, SyncConstValue, GroupsColumns {
63554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
63654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * no public constructor since this is a utility class
63754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
63854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        private Groups() {}
63954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
64054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
64154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for this table
64254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
64354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_URI =
64454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/groups");
64554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
64654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
64754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for the table that holds the deleted
64854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * groups.
64954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
65054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri DELETED_CONTENT_URI =
65154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/deleted_groups");
65254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
65354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
65454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of {@link #CONTENT_URI} providing a directory of
65554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * groups.
65654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
65754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroup";
65854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
65954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
66054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of a {@link #CONTENT_URI} subdirectory of a single
66154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * group.
66254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
66354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroup";
66454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
66554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
66654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The default sort order for this table
66754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
66854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DEFAULT_SORT_ORDER = NAME + " ASC";
66954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
67054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
67154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         *
67254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
67354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String GROUP_ANDROID_STARRED = "Starred in Android";
67454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
67554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
67654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The "My Contacts" system group.
67754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
67854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String GROUP_MY_CONTACTS = "Contacts";
67954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
68054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
68154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
68254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * Columns from the Phones table that other columns join into themselves.
68354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
68454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public interface PhonesColumns {
68554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
68654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The type of the the phone number.
68754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (one of the constants below)</P>
68854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
68954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String TYPE = "type";
69054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
69154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_CUSTOM = 0;
69254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_HOME = 1;
69354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_MOBILE = 2;
69454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_WORK = 3;
69554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_FAX_WORK = 4;
69654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_FAX_HOME = 5;
69754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_PAGER = 6;
69854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_OTHER = 7;
69954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
70054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
70154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The user provided label for the phone number, only used if TYPE is TYPE_CUSTOM.
70254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
70354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
70454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String LABEL = "label";
70554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
70654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
70754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The phone number as the user entered it.
70854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
70954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
71054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String NUMBER = "number";
71154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
71254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
71354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The normalized phone number
71454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
71554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
71654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String NUMBER_KEY = "number_key";
71754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
71854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
71954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Whether this is the primary phone number
72054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (if set, non-0 means true)</P>
72154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
72254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String ISPRIMARY = "isprimary";
72354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
72454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
72554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
72654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * This table stores phone numbers and a reference to the person that the
72754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * contact method belongs to. Phone numbers are stored separately from
72854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * other contact methods to make caller ID lookup more efficient.
72954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
73054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final class Phones
73154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            implements BaseColumns, PhonesColumns, PeopleColumns {
73254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
73354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * no public constructor since this is a utility class
73454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
73554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        private Phones() {}
73654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
73754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final CharSequence getDisplayLabel(Context context, int type,
73854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                CharSequence label, CharSequence[] labelArray) {
73954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            CharSequence display = "";
74054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
74154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (type != People.Phones.TYPE_CUSTOM) {
742dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                CharSequence[] labels = labelArray != null? labelArray
74354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        : context.getResources().getTextArray(
74454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                                com.android.internal.R.array.phoneTypes);
74554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                try {
74654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    display = labels[type - 1];
74754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                } catch (ArrayIndexOutOfBoundsException e) {
74854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    display = labels[People.Phones.TYPE_HOME - 1];
74954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
75054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            } else {
75154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                if (!TextUtils.isEmpty(label)) {
75254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    display = label;
75354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
75454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
75554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return display;
75654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
75754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
75854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final CharSequence getDisplayLabel(Context context, int type,
75954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                CharSequence label) {
76054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return getDisplayLabel(context, type, label, null);
76154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
762dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
76354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
76454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for this table
76554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
76654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_URI =
76754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/phones");
76854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
76954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
77054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for filtering phone numbers
77154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
77254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_FILTER_URL =
77354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/phones/filter");
77454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
77554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
77654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of {@link #CONTENT_URI} providing a directory of
77754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * phones.
77854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
77954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/phone";
78054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
78154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
78254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of a {@link #CONTENT_URI} subdirectory of a single
78354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * phone.
78454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
78554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone";
78654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
78754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
78854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The default sort order for this table
78954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
79054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DEFAULT_SORT_ORDER = "name ASC";
79154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
79254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
79354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The ID of the person this phone number is assigned to.
79454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (long)</P>
79554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
79654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String PERSON_ID = "person";
79754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
79854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
79954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final class GroupMembership implements BaseColumns, GroupsColumns {
80054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
80154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * no public constructor since this is a utility class
80254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
80354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        private GroupMembership() {}
80454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
80554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
80654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for this table
80754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
80854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_URI =
80954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/groupmembership");
81054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
81154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
81254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for this table
81354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
81454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri RAW_CONTENT_URI =
81554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/groupmembershipraw");
81654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
81754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
81854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The directory twig for this sub-table
81954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
82054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_DIRECTORY = "groupmembership";
82154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
82254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of {@link #CONTENT_URI} providing a directory of all
82354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * person groups.
82454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
82554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroupmembership";
82654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
82754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
82854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of a {@link #CONTENT_URI} subdirectory of a single
82954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * person group.
83054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
83154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_ITEM_TYPE =
83254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                "vnd.android.cursor.item/contactsgroupmembership";
83354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
83454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
83554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The default sort order for this table
83654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
83754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DEFAULT_SORT_ORDER = "group_id ASC";
83854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
83954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
84054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The row id of the accounts group.
84154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
84254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
84354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String GROUP_ID = "group_id";
84454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
84554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
84654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The sync id of the group.
84754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
84854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
84954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String GROUP_SYNC_ID = "group_sync_id";
85054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
85154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
85254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The account of the group.
85354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
85454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
85554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String GROUP_SYNC_ACCOUNT = "group_sync_account";
85654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
85754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
858d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana         * The account type of the group.
859d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana         * <P>Type: TEXT</P>
860d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana         */
861d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana        public static final String GROUP_SYNC_ACCOUNT_TYPE = "group_sync_account_type";
862d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana
863d9d2f1140b52fd0c014e9deac59f6000564b7e84Fred Quintana        /**
86454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The row id of the person.
86554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
86654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
86754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String PERSON_ID = "person";
86854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
86954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
87054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
87154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * Columns from the ContactMethods table that other tables join into
87254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * themseleves.
87354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
87454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public interface ContactMethodsColumns {
87554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
87654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The kind of the the contact method. For example, email address,
87754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * postal address, etc.
87854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (one of the values below)</P>
87954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
88054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String KIND = "kind";
88154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
88254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
88354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The type of the contact method, must be one of the types below.
88454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (one of the values below)</P>
88554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
88654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String TYPE = "type";
88754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_CUSTOM = 0;
88854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_HOME = 1;
88954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_WORK = 2;
89054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_OTHER = 3;
89154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
89254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
8937c3e18c558820de543e3aa4fb3a777940106166cDaisuke Miyakawa         * @hide This is temporal. TYPE_MOBILE should be added to TYPE in the future.
8947c3e18c558820de543e3aa4fb3a777940106166cDaisuke Miyakawa         */
8957c3e18c558820de543e3aa4fb3a777940106166cDaisuke Miyakawa        public static final int MOBILE_EMAIL_TYPE_INDEX = 2;
8967c3e18c558820de543e3aa4fb3a777940106166cDaisuke Miyakawa
8977c3e18c558820de543e3aa4fb3a777940106166cDaisuke Miyakawa        /**
8987c3e18c558820de543e3aa4fb3a777940106166cDaisuke Miyakawa         * @hide This is temporal. TYPE_MOBILE should be added to TYPE in the future.
8997c3e18c558820de543e3aa4fb3a777940106166cDaisuke Miyakawa         * This is not "mobile" but "CELL" since vCard uses it for identifying mobile phone.
9007c3e18c558820de543e3aa4fb3a777940106166cDaisuke Miyakawa         */
9017c3e18c558820de543e3aa4fb3a777940106166cDaisuke Miyakawa        public static final String MOBILE_EMAIL_TYPE_NAME = "_AUTO_CELL";
9027c3e18c558820de543e3aa4fb3a777940106166cDaisuke Miyakawa
9037c3e18c558820de543e3aa4fb3a777940106166cDaisuke Miyakawa        /**
90454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The user defined label for the the contact method.
90554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
90654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
90754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String LABEL = "label";
90854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
90954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
91054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The data for the contact method.
91154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
91254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
91354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DATA = "data";
91454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
91554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
91654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Auxiliary data for the contact method.
91754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
91854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
91954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String AUX_DATA = "aux_data";
92054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
92154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
92254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Whether this is the primary organization
92354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (if set, non-0 means true)</P>
92454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
92554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String ISPRIMARY = "isprimary";
92654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
92754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
92854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
92954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * This table stores all non-phone contact methods and a reference to the
93054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * person that the contact method belongs to.
93154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
93254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final class ContactMethods
93354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            implements BaseColumns, ContactMethodsColumns, PeopleColumns {
93454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
93554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The column with latitude data for postal locations
93654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: REAL</P>
93754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
93854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String POSTAL_LOCATION_LATITUDE = DATA;
93954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
94054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
94154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The column with longitude data for postal locations
94254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: REAL</P>
94354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
94454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String POSTAL_LOCATION_LONGITUDE = AUX_DATA;
94554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
94654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
94754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The predefined IM protocol types. The protocol can either be non-present, one
94854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * of these types, or a free-form string. These cases are encoded in the AUX_DATA
94954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * column as:
95054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         *  - null
95154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         *  - pre:<an integer, one of the protocols below>
95254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         *  - custom:<a string>
95354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
95454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int PROTOCOL_AIM = 0;
95554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int PROTOCOL_MSN = 1;
95654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int PROTOCOL_YAHOO = 2;
95754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int PROTOCOL_SKYPE = 3;
95854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int PROTOCOL_QQ = 4;
95954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int PROTOCOL_GOOGLE_TALK = 5;
96054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int PROTOCOL_ICQ = 6;
96154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int PROTOCOL_JABBER = 7;
96254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
96354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static String encodePredefinedImProtocol(int protocol) {
96454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return "pre:" + protocol;
96554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
96654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
96754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static String encodeCustomImProtocol(String protocolString) {
96854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return "custom:" + protocolString;
96954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
97054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
97154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static Object decodeImProtocol(String encodedString) {
97254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (encodedString == null) {
97354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                return null;
97454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
97554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
97654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (encodedString.startsWith("pre:")) {
97754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                return Integer.parseInt(encodedString.substring(4));
97854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
97954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
98054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (encodedString.startsWith("custom:")) {
98154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                return encodedString.substring(7);
98254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
98354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
98454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            throw new IllegalArgumentException(
98554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    "the value is not a valid encoded protocol, " + encodedString);
98654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
987dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
98854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
9899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * This looks up the provider name defined in
9909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * {@link android.provider.Im.ProviderNames} from the predefined IM protocol id.
99154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * This is used for interacting with the IM application.
9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *
99354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param protocol the protocol ID
9949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @return the provider name the IM app uses for the given protocol, or null if no
99554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * provider is defined for the given protocol
99654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @hide
99754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
9989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public static String lookupProviderNameFromId(int protocol) {
99954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            switch (protocol) {
100054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case PROTOCOL_GOOGLE_TALK:
10019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return Im.ProviderNames.GTALK;
100254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case PROTOCOL_AIM:
10039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return Im.ProviderNames.AIM;
100454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case PROTOCOL_MSN:
10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return Im.ProviderNames.MSN;
100654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case PROTOCOL_YAHOO:
10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return Im.ProviderNames.YAHOO;
100854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case PROTOCOL_ICQ:
10099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return Im.ProviderNames.ICQ;
10109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                case PROTOCOL_JABBER:
10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return Im.ProviderNames.JABBER;
10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                case PROTOCOL_SKYPE:
10139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return Im.ProviderNames.SKYPE;
10149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                case PROTOCOL_QQ:
10159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    return Im.ProviderNames.QQ;
101654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
101754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return null;
101854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
101954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
102054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
102154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * no public constructor since this is a utility class
102254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
102354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        private ContactMethods() {}
102454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
102554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final CharSequence getDisplayLabel(Context context, int kind,
102654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                int type, CharSequence label) {
102754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            CharSequence display = "";
102854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            switch (kind) {
102954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case KIND_EMAIL: {
103054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    if (type != People.ContactMethods.TYPE_CUSTOM) {
103154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        CharSequence[] labels = context.getResources().getTextArray(
103254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                                com.android.internal.R.array.emailAddressTypes);
103354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        try {
103454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                            display = labels[type - 1];
103554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        } catch (ArrayIndexOutOfBoundsException e) {
103654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                            display = labels[ContactMethods.TYPE_HOME - 1];
103754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        }
103854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    } else {
103954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        if (!TextUtils.isEmpty(label)) {
104054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                            display = label;
104154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        }
104254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    }
104354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    break;
104454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
104554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
104654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case KIND_POSTAL: {
104754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    if (type != People.ContactMethods.TYPE_CUSTOM) {
104854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        CharSequence[] labels = context.getResources().getTextArray(
104954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                                com.android.internal.R.array.postalAddressTypes);
105054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        try {
105154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                            display = labels[type - 1];
105254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        } catch (ArrayIndexOutOfBoundsException e) {
105354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                            display = labels[ContactMethods.TYPE_HOME - 1];
105454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        }
105554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    } else {
105654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        if (!TextUtils.isEmpty(label)) {
105754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                            display = label;
105854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        }
105954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    }
106054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    break;
106154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
106254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
106354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                default:
106454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    display = context.getString(R.string.untitled);
106554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
106654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return display;
106754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
106854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
106954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
107054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Add a longitude and latitude location to a postal address.
107154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         *
107254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param context the context to use when updating the database
107354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param postalId the address to update
107454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param latitude the latitude for the address
107554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param longitude the longitude for the address
107654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
107754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public void addPostalLocation(Context context, long postalId,
107854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                double latitude, double longitude) {
107954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            final ContentResolver resolver = context.getContentResolver();
108054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // Insert the location
108154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            ContentValues values = new ContentValues(2);
108254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            values.put(POSTAL_LOCATION_LATITUDE, latitude);
108354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            values.put(POSTAL_LOCATION_LONGITUDE, longitude);
108454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri loc = resolver.insert(CONTENT_URI, values);
108554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            long locId = ContentUris.parseId(loc);
108654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
108754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            // Update the postal address
108854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            values.clear();
108954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            values.put(AUX_DATA, locId);
109054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            resolver.update(ContentUris.withAppendedId(CONTENT_URI, postalId), values, null, null);
109154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
109254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
109354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
109454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for this table
109554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
109654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_URI =
109754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/contact_methods");
109854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
109954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
110054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for sub-directory of e-mail addresses.
110154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
110254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_EMAIL_URI =
110354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/contact_methods/email");
110454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
110554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
110654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of {@link #CONTENT_URI} providing a directory of
110754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * phones.
110854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
110954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact-methods";
111054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
111154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
111254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of a {@link #CONTENT_EMAIL_URI} sub-directory of\
111354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * multiple {@link Contacts#KIND_EMAIL} entries.
111454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
111554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_EMAIL_TYPE = "vnd.android.cursor.dir/email";
111654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
111754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
111854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of a {@link #CONTENT_EMAIL_URI} sub-directory of\
111954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * multiple {@link Contacts#KIND_POSTAL} entries.
112054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
112154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_POSTAL_TYPE = "vnd.android.cursor.dir/postal-address";
112254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
112354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
112454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of a {@link #CONTENT_URI} sub-directory of a single
112554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * {@link Contacts#KIND_EMAIL} entry.
112654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
112754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_EMAIL_ITEM_TYPE = "vnd.android.cursor.item/email";
112854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
112954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
113054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of a {@link #CONTENT_URI} sub-directory of a single
113154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * {@link Contacts#KIND_POSTAL} entry.
113254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
113354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_POSTAL_ITEM_TYPE
113454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                = "vnd.android.cursor.item/postal-address";
113554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
113654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
113754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of a {@link #CONTENT_URI} sub-directory of a single
113854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * {@link Contacts#KIND_IM} entry.
113954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
114054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_IM_ITEM_TYPE = "vnd.android.cursor.item/jabber-im";
114154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
114254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
114354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The default sort order for this table
114454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
114554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DEFAULT_SORT_ORDER = "name ASC";
114654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
114754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
114854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The ID of the person this contact method is assigned to.
114954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (long)</P>
115054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
115154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String PERSON_ID = "person";
115254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
115354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
115454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
115554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * The IM presence columns with some contacts specific columns mixed in.
115654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
115754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public interface PresenceColumns extends Im.CommonPresenceColumns {
115854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
115954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The IM service the presence is coming from. Formatted using either
116054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * {@link Contacts.ContactMethods#encodePredefinedImProtocol} or
116154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * {@link Contacts.ContactMethods#encodeCustomImProtocol}.
116254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: STRING</P>
116354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
116454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String IM_PROTOCOL = "im_protocol";
116554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
116654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
116754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The IM handle the presence item is for. The handle is scoped to
116854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * the {@link #IM_PROTOCOL}.
116954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: STRING</P>
117054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
117154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String IM_HANDLE = "im_handle";
117254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
117354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
117454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The IM account for the local user that the presence data came from.
117554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: STRING</P>
117654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
117754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String IM_ACCOUNT = "im_account";
117854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
117954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
118054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
118154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * Contains presence information about contacts.
118254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * @hide
118354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
118454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final class Presence
118554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            implements BaseColumns, PresenceColumns, PeopleColumns {
118654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
118754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for this table
118854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
118954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_URI =
119054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/presence");
119154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
119254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
119354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The ID of the person this presence item is assigned to.
119454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (long)</P>
119554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
119654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String PERSON_ID = "person";
119754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
119854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
119954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Gets the resource ID for the proper presence icon.
1200dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar         *
120154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param status the status to get the icon for
120254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @return the resource ID for the proper presence icon
120354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
120454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int getPresenceIconResourceId(int status) {
120554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            switch (status) {
120654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case Contacts.People.AVAILABLE:
120754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    return com.android.internal.R.drawable.presence_online;
1208dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
120954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case Contacts.People.IDLE:
121054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case Contacts.People.AWAY:
121154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    return com.android.internal.R.drawable.presence_away;
1212dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
121354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case Contacts.People.DO_NOT_DISTURB:
121454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    return com.android.internal.R.drawable.presence_busy;
1215dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
121654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case Contacts.People.INVISIBLE:
121754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    return com.android.internal.R.drawable.presence_invisible;
1218dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
121954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                case Contacts.People.OFFLINE:
122054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                default:
122154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    return com.android.internal.R.drawable.presence_offline;
122254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
122354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
122454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
122554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
122654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Sets a presence icon to the proper graphic
122754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         *
122854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param icon the icon to to set
122954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * @param serverStatus that status
123054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
123154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final void setPresenceIcon(ImageView icon, int serverStatus) {
123254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            icon.setImageResource(getPresenceIconResourceId(serverStatus));
123354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
123454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
123554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
123654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
123754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * Columns from the Organizations table that other columns join into themselves.
123854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
123954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public interface OrganizationColumns {
124054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
1241ae499953ce0e00aae78f374514d4bcc6b99c8354Evan JIANG         * The type of the organizations.
124254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (one of the constants below)</P>
124354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
124454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String TYPE = "type";
124554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
124654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_CUSTOM = 0;
124754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_WORK = 1;
124854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final int TYPE_OTHER = 2;
124954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
125054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
125154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The user provided label, only used if TYPE is TYPE_CUSTOM.
125254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
125354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
125454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String LABEL = "label";
125554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
125654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
125754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The name of the company for this organization.
125854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
125954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
126054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String COMPANY = "company";
126154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
126254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
126354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The title within this organization.
126454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
126554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
126654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String TITLE = "title";
126754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
126854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
126954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The person this organization is tied to.
127054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
127154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
127254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String PERSON_ID = "person";
127354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
127454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
127554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Whether this is the primary organization
127654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (if set, non-0 means true)</P>
127754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
127854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String ISPRIMARY = "isprimary";
127954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
128054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
128154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
128254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * A sub directory of a single person that contains all of their Phones.
128354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
128454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final class Organizations implements BaseColumns, OrganizationColumns {
128554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
128654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * no public constructor since this is a utility class
128754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
128854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        private Organizations() {}
128954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
129054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final CharSequence getDisplayLabel(Context context, int type,
129154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                CharSequence label) {
129254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            CharSequence display = "";
129354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
129454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            if (type != TYPE_CUSTOM) {
129554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                CharSequence[] labels = context.getResources().getTextArray(
129654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                        com.android.internal.R.array.organizationTypes);
129754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                try {
129854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    display = labels[type - 1];
129954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                } catch (ArrayIndexOutOfBoundsException e) {
1300ae499953ce0e00aae78f374514d4bcc6b99c8354Evan JIANG                    display = labels[Organizations.TYPE_WORK - 1];
130154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
130254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            } else {
130354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                if (!TextUtils.isEmpty(label)) {
130454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                    display = label;
130554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project                }
130654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            }
130754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            return display;
130854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
130954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
131054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
131154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for this table
131254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
131354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_URI =
131454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/organizations");
131554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
131654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
131754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The directory twig for this sub-table
131854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
131954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_DIRECTORY = "organizations";
132054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
132154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
132254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The default sort order for this table
132354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
132454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DEFAULT_SORT_ORDER = "company, title, isprimary ASC";
132554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
132654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
132754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
132854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * Columns from the Photos table that other columns join into themselves.
132954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
133054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public interface PhotosColumns {
133154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
133254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The _SYNC_VERSION of the photo that was last downloaded
133354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
133454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
133554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String LOCAL_VERSION = "local_version";
133654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
133754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
133854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The person this photo is associated with.
133954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
134054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
134154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String PERSON_ID = "person";
134254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
134354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
134454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * non-zero if a download is required and the photo isn't marked as a bad resource.
134554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * You must specify this in the columns in order to use it in the where clause.
134654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER(boolean)</P>
134754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
134854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DOWNLOAD_REQUIRED = "download_required";
134954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
135054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
135154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * non-zero if this photo is known to exist on the server
135254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER(boolean)</P>
135354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
135454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String EXISTS_ON_SERVER = "exists_on_server";
135554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
135654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
135754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Contains the description of the upload or download error from
135854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * the previous attempt. If null then the previous attempt succeeded.
135954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
136054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
136154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String SYNC_ERROR = "sync_error";
136254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
136354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
136454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The image data, or null if there is no image.
136554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: BLOB</P>
136654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
136754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DATA = "data";
136854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
136954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
137054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
137154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
137254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * The photos over all of the people
137354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
137454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final class Photos implements BaseColumns, PhotosColumns, SyncConstValue {
137554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
137654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * no public constructor since this is a utility class
137754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
137854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        private Photos() {}
137954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
138054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
138154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for this table
138254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
138354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_URI =
138454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/photos");
138554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
138654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
138754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The directory twig for this sub-table
138854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
138954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_DIRECTORY = "photo";
139054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
139154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
139254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The default sort order for this table
139354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
139454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DEFAULT_SORT_ORDER = "person ASC";
139554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
139654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
139754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public interface ExtensionsColumns {
139854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
139954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The name of this extension. May not be null. There may be at most one row for each name.
140054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
140154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
140254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String NAME = "name";
140354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
140454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
140554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The value of this extension. May not be null.
140654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: TEXT</P>
140754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
140854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String VALUE = "value";
140954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
141054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
141154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
141254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * The extensions for a person
141354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
141454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final class Extensions implements BaseColumns, ExtensionsColumns {
141554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
141654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * no public constructor since this is a utility class
141754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
141854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        private Extensions() {}
141954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
142054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
142154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The content:// style URL for this table
142254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
142354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final Uri CONTENT_URI =
142454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            Uri.parse("content://contacts/extensions");
142554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
142654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
142754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of {@link #CONTENT_URI} providing a directory of
142854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * phones.
142954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
143054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_extensions";
143154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
143254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
143354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The MIME type of a {@link #CONTENT_URI} subdirectory of a single
143454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * phone.
143554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
143654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_extensions";
143754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
143854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The default sort order for this table
143954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
144054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String DEFAULT_SORT_ORDER = "person, name ASC";
144154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
144254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
144354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * The ID of the person this phone number is assigned to.
144454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * <P>Type: INTEGER (long)</P>
144554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
144654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String PERSON_ID = "person";
144754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
144854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
144954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    /**
145054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * Contains helper classes used to create or manage {@link android.content.Intent Intents}
145154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     * that involve contacts.
145254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project     */
145354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    public static final class Intents {
145454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
145554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * This is the intent that is fired when a search suggestion is clicked on.
145654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
145754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String SEARCH_SUGGESTION_CLICKED =
1458dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                ContactsContract.Intents.SEARCH_SUGGESTION_CLICKED;
145954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
146054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
1461dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar         * This is the intent that is fired when a search suggestion for dialing a number
146254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * is clicked on.
146354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
146454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED =
1465dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                ContactsContract.Intents.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED;
146654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
146754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
146854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * This is the intent that is fired when a search suggestion for creating a contact
146954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * is clicked on.
147054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
147154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED =
1472dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                ContactsContract.Intents.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED;
147354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
147454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
147554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Starts an Activity that lets the user pick a contact to attach an image to.
147654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * After picking the contact it launches the image cropper in face detection mode.
147754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
1478dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar        public static final String ATTACH_IMAGE = ContactsContract.Intents.ATTACH_IMAGE;
1479c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project
1480c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project        /**
1481c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * Takes as input a data URI with a mailto: or tel: scheme. If a single
1482c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * contact exists with the given data it will be shown. If no contact
1483c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * exists, a dialog will ask the user if they want to create a new
1484c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * contact with the provided details filled in. If multiple contacts
1485c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * share the data the user will be prompted to pick which contact they
1486c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * want to view.
1487c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * <p>
1488c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * For <code>mailto:</code> URIs, the scheme specific portion must be a
1489c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * raw email address, such as one built using
1490c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * {@link Uri#fromParts(String, String, String)}.
1491c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * <p>
1492c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * For <code>tel:</code> URIs, the scheme specific portion is compared
1493c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * to existing numbers using the standard caller ID lookup algorithm.
1494c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * The number must be properly encoded, for example using
1495c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * {@link Uri#fromParts(String, String, String)}.
1496c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * <p>
1497c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * Any extras from the {@link Insert} class will be passed along to the
1498c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * create activity if there are no contacts to show.
1499c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * <p>
1500c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * Passing true for the {@link #EXTRA_FORCE_CREATE} extra will skip
1501c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         * prompting the user when the contact doesn't exist.
1502c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         */
1503c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project        public static final String SHOW_OR_CREATE_CONTACT =
1504dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                ContactsContract.Intents.SHOW_OR_CREATE_CONTACT;
1505c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project
1506c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project        /**
1507105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project         * Used with {@link #SHOW_OR_CREATE_CONTACT} to force creating a new
1508105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project         * contact if no matching contact found. Otherwise, default behavior is
1509105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project         * to prompt user with dialog before creating.
1510105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project         * <p>
1511105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project         * Type: BOOLEAN
1512c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project         */
1513dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar        public static final String EXTRA_FORCE_CREATE = ContactsContract.Intents.EXTRA_FORCE_CREATE;
1514dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
1515105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project        /**
1516105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project         * Used with {@link #SHOW_OR_CREATE_CONTACT} to specify an exact
1517105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project         * description to be shown when prompting user about creating a new
1518105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project         * contact.
1519105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project         * <p>
1520105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project         * Type: STRING
1521105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project         */
1522105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project        public static final String EXTRA_CREATE_DESCRIPTION =
1523dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                ContactsContract.Intents.EXTRA_CREATE_DESCRIPTION;
1524c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project
152554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
152654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Intents related to the Contacts app UI.
152754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
152854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final class UI {
152954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
153054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The action for the default contacts list tab.
153154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1532dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String LIST_DEFAULT = ContactsContract.Intents.UI.LIST_DEFAULT;
153354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
153454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
153554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The action for the contacts list tab.
153654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
153754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String LIST_GROUP_ACTION =
1538dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.UI.LIST_GROUP_ACTION;
153954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
154054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
154154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * When in LIST_GROUP_ACTION mode, this is the group to display.
154254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1543dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String GROUP_NAME_EXTRA_KEY =
1544dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.UI.GROUP_NAME_EXTRA_KEY;
154554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
154654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The action for the all contacts list tab.
154754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
154854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String LIST_ALL_CONTACTS_ACTION =
1549dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.UI.LIST_ALL_CONTACTS_ACTION;
155054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
155154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
155254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The action for the contacts with phone numbers list tab.
155354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
155454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String LIST_CONTACTS_WITH_PHONES_ACTION =
1555dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.UI.LIST_CONTACTS_WITH_PHONES_ACTION;
155654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
155754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
155854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The action for the starred contacts list tab.
155954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
156054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String LIST_STARRED_ACTION =
1561dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.UI.LIST_STARRED_ACTION;
156254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
156354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
156454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The action for the frequent contacts list tab.
156554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
156654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String LIST_FREQUENT_ACTION =
1567dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.UI.LIST_FREQUENT_ACTION;
156854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
156954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
157054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The action for the "strequent" contacts list tab. It first lists the starred
157154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * contacts in alphabetical order and then the frequent contacts in descending
157254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * order of the number of times they have been contacted.
157354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
157454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String LIST_STREQUENT_ACTION =
1575dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.UI.LIST_STREQUENT_ACTION;
157654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
157754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
157854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * A key for to be used as an intent extra to set the activity
157954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * title to a custom String value.
158054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
158154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            public static final String TITLE_EXTRA_KEY =
1582dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.UI.TITLE_EXTRA_KEY;
1583dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
158454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
158554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * Activity Action: Display a filtered list of contacts
158654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <p>
158754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * Input: Extra field {@link #FILTER_TEXT_EXTRA_KEY} is the text to use for
158854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * filtering
158954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <p>
159054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * Output: Nothing.
159154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1592dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String FILTER_CONTACTS_ACTION =
1593dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.UI.FILTER_CONTACTS_ACTION;
1594dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar
159554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
159654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * Used as an int extra field in {@link #FILTER_CONTACTS_ACTION}
159754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * intents to supply the text on which to filter.
159854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1599dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String FILTER_TEXT_EXTRA_KEY =
1600dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.UI.FILTER_TEXT_EXTRA_KEY;
160154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
160254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
160354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        /**
160454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * Convenience class that contains string constants used
160554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         * to create contact {@link android.content.Intent Intents}.
160654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project         */
160754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        public static final class Insert {
160854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /** The action code to use when adding a contact */
1609dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String ACTION = ContactsContract.Intents.Insert.ACTION;
161054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
161154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * If present, forces a bypass of quick insert mode.
161254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1613dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String FULL_MODE = ContactsContract.Intents.Insert.FULL_MODE;
161454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
161554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the contact name.
161654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: String</P>
161754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1618dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String NAME = ContactsContract.Intents.Insert.NAME;
161954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
162054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
1621b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project             * The extra field for the contact phonetic name.
1622b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project             * <P>Type: String</P>
1623b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project             */
1624dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String PHONETIC_NAME =
1625dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.Insert.PHONETIC_NAME;
1626b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project
1627b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project            /**
162854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the contact company.
162954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: String</P>
163054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1631dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String COMPANY = ContactsContract.Intents.Insert.COMPANY;
163254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
163354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
163454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the contact job title.
163554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: String</P>
163654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1637dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String JOB_TITLE = ContactsContract.Intents.Insert.JOB_TITLE;
163854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
163954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
164054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the contact notes.
164154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: String</P>
164254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1643dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String NOTES = ContactsContract.Intents.Insert.NOTES;
164454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
164554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
164654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the contact phone number.
164754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: String</P>
164854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1649dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String PHONE = ContactsContract.Intents.Insert.PHONE;
165054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
165154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
165254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the contact phone number type.
165354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns},
1654b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project             *  or a string specifying a custom label.</P>
165554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1656dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String PHONE_TYPE = ContactsContract.Intents.Insert.PHONE_TYPE;
165754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
165854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
165954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the phone isprimary flag.
166054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: boolean</P>
166154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1662dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String PHONE_ISPRIMARY =
1663dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.Insert.PHONE_ISPRIMARY;
166454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
166554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
1666f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * The extra field for an optional second contact phone number.
1667f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * <P>Type: String</P>
1668f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             */
1669dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String SECONDARY_PHONE =
1670dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.Insert.SECONDARY_PHONE;
1671f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
1672f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            /**
1673f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * The extra field for an optional second contact phone number type.
1674f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * <P>Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns},
1675b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project             *  or a string specifying a custom label.</P>
1676f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             */
1677dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String SECONDARY_PHONE_TYPE =
1678dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.Insert.SECONDARY_PHONE_TYPE;
1679f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
1680f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            /**
1681f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * The extra field for an optional third contact phone number.
1682f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * <P>Type: String</P>
1683f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             */
1684dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String TERTIARY_PHONE =
1685dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.Insert.TERTIARY_PHONE;
1686f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
1687f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            /**
1688f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * The extra field for an optional third contact phone number type.
1689f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * <P>Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns},
1690b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project             *  or a string specifying a custom label.</P>
1691f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             */
1692dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String TERTIARY_PHONE_TYPE =
1693dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.Insert.TERTIARY_PHONE_TYPE;
1694f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
1695f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            /**
169654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the contact email address.
169754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: String</P>
169854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1699dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String EMAIL = ContactsContract.Intents.Insert.EMAIL;
170054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
170154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
170254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the contact email type.
170354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns}
1704b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project             *  or a string specifying a custom label.</P>
170554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1706dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String EMAIL_TYPE = ContactsContract.Intents.Insert.EMAIL_TYPE;
170754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
170854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
170954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the email isprimary flag.
171054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: boolean</P>
171154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1712dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String EMAIL_ISPRIMARY =
1713dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.Insert.EMAIL_ISPRIMARY;
171454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
171554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
1716f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * The extra field for an optional second contact email address.
1717f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * <P>Type: String</P>
1718f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             */
1719dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String SECONDARY_EMAIL =
1720dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.Insert.SECONDARY_EMAIL;
1721f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
1722f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            /**
1723f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * The extra field for an optional second contact email type.
1724f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns}
1725b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project             *  or a string specifying a custom label.</P>
1726f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             */
1727dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String SECONDARY_EMAIL_TYPE =
1728dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.Insert.SECONDARY_EMAIL_TYPE;
1729f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
1730f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            /**
1731f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * The extra field for an optional third contact email address.
1732f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * <P>Type: String</P>
1733f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             */
1734dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String TERTIARY_EMAIL =
1735dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.Insert.TERTIARY_EMAIL;
1736f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
1737f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            /**
1738f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * The extra field for an optional third contact email type.
1739f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns}
1740b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project             *  or a string specifying a custom label.</P>
1741f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project             */
1742dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String TERTIARY_EMAIL_TYPE =
1743dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar                    ContactsContract.Intents.Insert.TERTIARY_EMAIL_TYPE;
1744f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project
1745f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project            /**
174654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the contact postal address.
174754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: String</P>
174854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1749dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String POSTAL = ContactsContract.Intents.Insert.POSTAL;
175054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
175154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
175254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the contact postal address type.
175354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns}
1754b798689749c64baba81f02e10cf2157c747d6b46The Android Open Source Project             *  or a string specifying a custom label.</P>
175554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1756dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String POSTAL_TYPE = ContactsContract.Intents.Insert.POSTAL_TYPE;
175754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
175854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
175954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the postal isprimary flag.
176054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: boolean</P>
176154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1762dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String POSTAL_ISPRIMARY = ContactsContract.Intents.Insert.POSTAL_ISPRIMARY;
176354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
176454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
176554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for an IM handle.
176654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: String</P>
176754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1768dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String IM_HANDLE = ContactsContract.Intents.Insert.IM_HANDLE;
176954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
177054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
177154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the IM protocol
177254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: the result of {@link Contacts.ContactMethods#encodePredefinedImProtocol}
177354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * or {@link Contacts.ContactMethods#encodeCustomImProtocol}.</P>
177454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1775dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String IM_PROTOCOL = ContactsContract.Intents.Insert.IM_PROTOCOL;
177654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
177754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project            /**
177854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * The extra field for the IM isprimary flag.
177954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             * <P>Type: boolean</P>
178054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project             */
1781dc2da5fd922fc8de0ffcb22df3622b57ed777732Evan Millar            public static final String IM_ISPRIMARY = ContactsContract.Intents.Insert.IM_ISPRIMARY;
178254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project        }
178354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    }
178454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project}
1785