AllIntentsActivity.java revision 86092529f272b7ed2cee24fae397291696b29b80
131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov/*
231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project
331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov *
431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License");
531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov * you may not use this file except in compliance with the License.
631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov * You may obtain a copy of the License at
731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov *
831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov *      http://www.apache.org/licenses/LICENSE-2.0
931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov *
1031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov * Unless required by applicable law or agreed to in writing, software
1131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS,
1231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov * See the License for the specific language governing permissions and
1431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov * limitations under the License.
1531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov */
1631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
1731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovpackage com.android.contacts.tests.allintents;
1831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
191a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikovimport com.android.contacts.list.ContactsRequest;
2031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport com.android.contacts.tests.R;
2179bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikovimport com.google.android.collect.Lists;
2231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
232013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmannimport android.accounts.Account;
2431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.app.ListActivity;
2531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.app.SearchManager;
2631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.content.ComponentName;
2731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.content.ContentUris;
2879bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikovimport android.content.ContentValues;
2931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.content.Intent;
3031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.database.Cursor;
3131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.net.Uri;
3231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.os.Bundle;
3331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.provider.Contacts.ContactMethods;
3431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.provider.Contacts.People;
3531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.provider.Contacts.Phones;
3679bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikovimport android.provider.ContactsContract.CommonDataKinds.Email;
3779bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikovimport android.provider.ContactsContract.CommonDataKinds.Organization;
3831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.provider.ContactsContract.CommonDataKinds.Phone;
3931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
4027834b2ae8bb5a65dfc20c212844d98d1c252caeDmitri Plotnikovimport android.provider.ContactsContract.Contacts;
4179bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikovimport android.provider.ContactsContract.Data;
4227834b2ae8bb5a65dfc20c212844d98d1c252caeDmitri Plotnikovimport android.provider.ContactsContract.Intents;
4331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.provider.ContactsContract.Intents.Insert;
4431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.provider.ContactsContract.Intents.UI;
4527834b2ae8bb5a65dfc20c212844d98d1c252caeDmitri Plotnikovimport android.provider.ContactsContract.RawContacts;
4631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.view.View;
4731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.widget.ArrayAdapter;
4831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.widget.ListView;
4965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmannimport android.widget.Toast;
5031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
5131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov/**
5231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov * An activity that provides access to various modes of the contacts application.
5331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov * Useful for manual and scripted tests.
5431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov */
5531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov@SuppressWarnings("deprecation")
562013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmannpublic class AllIntentsActivity extends ListActivity
572013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann        implements SelectAccountDialogFragment.Listener {
5831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
5931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final String ANDROID_CONTACTS_PACKAGE = "com.android.contacts";
6031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
61b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov    private static final String CONTACT_LIST_ACTIVITY_CLASS_NAME =
62009676f9f2a5d8d47756be37abd9a14f2e564979Dmitri Plotnikov            "com.android.contacts.activities.ContactBrowserActivity";
6331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final String SEARCH_RESULTS_ACTIVITY_CLASS_NAME =
6431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            "com.android.contacts.SearchResultsActivity";
65e8ae9acbde772c94fd7d50b3f65bd3b1278c338bDmitri Plotnikov    private static final String MULTIPLE_PHONE_PICKER_ACTIVITY_CLASS_NAME =
6627834b2ae8bb5a65dfc20c212844d98d1c252caeDmitri Plotnikov            "com.android.contacts.MultiplePhonePickerActivity";
6731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
6831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int LIST_DEFAULT = 0;
6931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int LIST_ALL_CONTACTS_ACTION = 1;
7031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int LIST_CONTACTS_WITH_PHONES_ACTION = 2;
7131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int LIST_STARRED_ACTION = 3;
7231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int LIST_STARRED_ACTION_WITH_FILTER = 4;
7331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int LIST_FREQUENT_ACTION = 5;
7431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int LIST_FREQUENT_ACTION_WITH_FILTER = 6;
7531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int LIST_STREQUENT_ACTION = 7;
7631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int LIST_STREQUENT_ACTION_WITH_FILTER = 8;
7731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_PICK_CONTACT = 9;
7831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_PICK_CONTACT_LEGACY = 10;
7931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_PICK_PHONE = 11;
8031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_PICK_PHONE_LEGACY = 12;
8131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_PICK_POSTAL = 13;
8231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_PICK_POSTAL_LEGACY = 14;
8331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_CREATE_SHORTCUT_CONTACT = 15;
8431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_CREATE_SHORTCUT_CONTACT_FILTER = 16;
8531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_CREATE_SHORTCUT_DIAL = 17;
8631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_CREATE_SHORTCUT_DIAL_FILTER = 18;
8731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_CREATE_SHORTCUT_MESSAGE = 19;
8831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_CREATE_SHORTCUT_MESSAGE_FILTER = 20;
8931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_GET_CONTENT_CONTACT = 21;
9031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_GET_CONTENT_CONTACT_FILTER = 22;
9131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_GET_CONTENT_CONTACT_LEGACY = 23;
9231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_GET_CONTENT_CONTACT_FILTER_LEGACY = 24;
9331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_GET_CONTENT_PHONE = 25;
9431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_GET_CONTENT_PHONE_FILTER = 26;
9531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_GET_CONTENT_PHONE_LEGACY = 27;
9631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_GET_CONTENT_POSTAL = 28;
9731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_GET_CONTENT_POSTAL_FILTER = 29;
9831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_GET_CONTENT_POSTAL_LEGACY = 30;
9931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_INSERT_OR_EDIT = 31;
10031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_SEARCH_CALL = 32;
10131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_SEARCH_CONTACT = 33;
10231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_SEARCH_EMAIL = 34;
10331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_SEARCH_PHONE = 35;
10431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int SEARCH_SUGGESTION_CLICKED_CALL_BUTTON = 36;
10531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int SEARCH_SUGGESTION_CLICKED_CONTACT = 37;
10631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = 38;
10731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = 39;
10831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int JOIN_CONTACT = 40;
10931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final int ACTION_GET_MULTIPLE_PHONES = 41;
11031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
11165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann    private static final int EDIT_CONTACT = 42;
11265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann    private static final int EDIT_CONTACT_LOOKUP = 43;
11365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann    private static final int EDIT_CONTACT_LOOKUP_ID = 44;
11465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann    private static final int EDIT_RAW_CONTACT = 45;
11565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann    private static final int EDIT_LEGACY = 46;
11665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann    private static final int EDIT_NEW_CONTACT = 47;
11779bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov    private static final int EDIT_NEW_CONTACT_WITH_DATA = 48;
1182013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    private static final int EDIT_NEW_CONTACT_FOR_ACCOUNT = 49;
1192013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    private static final int EDIT_NEW_CONTACT_FOR_ACCOUNT_WITH_DATA = 50;
1202013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    private static final int EDIT_NEW_RAW_CONTACT = 51;
1212013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    private static final int EDIT_NEW_LEGACY = 52;
12265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann
1232013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    private static final int VIEW_CONTACT = 53;
1242013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    private static final int VIEW_CONTACT_LOOKUP = 54;
1252013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    private static final int VIEW_CONTACT_LOOKUP_ID = 55;
1262013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    private static final int VIEW_RAW_CONTACT = 56;
1272013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    private static final int VIEW_LEGACY = 57;
1283b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann
129e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann    private static final int DIAL = 58;
130e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann    private static final int DIAL_phone = 59;
131e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann    private static final int DIAL_person = 60;
132e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann    private static final int DIAL_voicemail = 61;
133e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann    private static final int CALL_BUTTON = 62;
134e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann    private static final int DIAL_tel = 63;
135e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann    private static final int VIEW_tel = 64;
136e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann
13731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    @Override
13831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    protected void onCreate(Bundle savedInstanceState) {
13931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        super.onCreate(savedInstanceState);
14031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        setListAdapter(new ArrayAdapter<String>(this, R.layout.intent_list_item,
14131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                getResources().getStringArray(R.array.allIntents)));
14231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
14331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
14431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    @Override
14531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    protected void onListItemClick(ListView l, View v, int position, long id) {
14631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        super.onListItemClick(l, v, position, id);
14731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
14831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        switch (position) {
14931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_DEFAULT: {
150b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
15131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(Intent.ACTION_VIEW, Contacts.CONTENT_URI));
15231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
15331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
15431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_ALL_CONTACTS_ACTION: {
155b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
15631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(UI.LIST_ALL_CONTACTS_ACTION, Contacts.CONTENT_URI));
15731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
15831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
15931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_CONTACTS_WITH_PHONES_ACTION: {
160b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
16131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(UI.LIST_CONTACTS_WITH_PHONES_ACTION, Contacts.CONTENT_URI));
16231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
16331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
16431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_STARRED_ACTION: {
165b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
16631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(UI.LIST_STARRED_ACTION, Contacts.CONTENT_URI));
16731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
16831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
16931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_STARRED_ACTION_WITH_FILTER: {
170b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(buildFilterIntent(ContactsRequest.ACTION_STARRED, false));
17131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
17231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
17331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_FREQUENT_ACTION: {
174b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
17531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(UI.LIST_FREQUENT_ACTION, Contacts.CONTENT_URI));
17631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
17731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
17831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_FREQUENT_ACTION_WITH_FILTER: {
179b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
1801a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov                        buildFilterIntent(ContactsRequest.ACTION_FREQUENT, false));
18131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
18231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
18331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_STREQUENT_ACTION: {
184b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
18531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(UI.LIST_STREQUENT_ACTION, Contacts.CONTENT_URI));
18631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
18731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
18831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_STREQUENT_ACTION_WITH_FILTER: {
189b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
1901a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov                        buildFilterIntent(ContactsRequest.ACTION_STREQUENT, false));
19131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
19231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
19331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_PICK_CONTACT: {
194b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
19531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI));
19631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
19731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
19831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_PICK_CONTACT_LEGACY: {
199b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
20031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(Intent.ACTION_PICK, People.CONTENT_URI));
20131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
20231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
20331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_PICK_PHONE: {
204b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
20531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(Intent.ACTION_PICK, Phone.CONTENT_URI));
20631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
20731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
20831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_PICK_PHONE_LEGACY: {
209b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
21031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(Intent.ACTION_PICK, Phones.CONTENT_URI));
21131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
21231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
21331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_PICK_POSTAL: {
214b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
21531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(Intent.ACTION_PICK, StructuredPostal.CONTENT_URI));
21631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
21731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
21831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_PICK_POSTAL_LEGACY: {
21931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_PICK);
22031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(ContactMethods.CONTENT_POSTAL_TYPE);
221b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
22231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
22331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
22431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_CREATE_SHORTCUT_CONTACT: {
22531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
226b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
22731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
22831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
22931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_CREATE_SHORTCUT_CONTACT_FILTER: {
230b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
2311a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov                        buildFilterIntent(ContactsRequest.ACTION_CREATE_SHORTCUT_CONTACT,
2321a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov                                false));
23331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
23431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
23531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_CREATE_SHORTCUT_DIAL: {
23631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
23731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setComponent(
23831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new ComponentName(ANDROID_CONTACTS_PACKAGE, "alias.DialShortcut"));
23931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                startActivityForResult(intent, 0);
24031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
24131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
24231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_CREATE_SHORTCUT_DIAL_FILTER: {
243b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
2441a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov                        buildFilterIntent(ContactsRequest.ACTION_CREATE_SHORTCUT_CALL,
2451a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov                                false));
24631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
24731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
24831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_CREATE_SHORTCUT_MESSAGE: {
24931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
25031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setComponent(
25131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new ComponentName(ANDROID_CONTACTS_PACKAGE, "alias.MessageShortcut"));
25231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                startActivityForResult(intent, 0);
25331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
25431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
25531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_CREATE_SHORTCUT_MESSAGE_FILTER: {
256b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
2571a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov                        buildFilterIntent(ContactsRequest.ACTION_CREATE_SHORTCUT_CALL, false));
25831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
25931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
26031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_CONTACT: {
26131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
26231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(Contacts.CONTENT_ITEM_TYPE);
263b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
26431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
26531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
26631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_CONTACT_LEGACY: {
26731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
26831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(People.CONTENT_ITEM_TYPE);
269b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
27031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
27131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
27231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_CONTACT_FILTER: {
273b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
2741a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov                        buildFilterIntent(ContactsRequest.ACTION_PICK_OR_CREATE_CONTACT, false));
27531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
27631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
27731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_CONTACT_FILTER_LEGACY: {
278b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
2791a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov                        buildFilterIntent(ContactsRequest.ACTION_PICK_OR_CREATE_CONTACT,
2801a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov                                true));
28131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
28231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
28331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_PHONE: {
28431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
28531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(Phone.CONTENT_ITEM_TYPE);
286b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
28731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
28831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
28931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_PHONE_FILTER: {
290b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
2911a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov                        buildFilterIntent(ContactsRequest.ACTION_PICK_PHONE, true));
29231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
29331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
29431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_PHONE_LEGACY: {
29531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
29631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(Phones.CONTENT_ITEM_TYPE);
297b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
29831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
29931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
30031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_POSTAL: {
30131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
30231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(StructuredPostal.CONTENT_ITEM_TYPE);
303b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
30431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
30531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
30631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_POSTAL_FILTER: {
307b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
3081a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov                        buildFilterIntent(ContactsRequest.ACTION_PICK_POSTAL, false));
30931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
31031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
31131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_POSTAL_LEGACY: {
31231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
31331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(ContactMethods.CONTENT_POSTAL_ITEM_TYPE);
314b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
31531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
31631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
31731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_INSERT_OR_EDIT: {
31831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
31986092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov                intent.setType(Contacts.CONTENT_ITEM_TYPE);
32086092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov                putDataExtra(intent);
32186092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov                startActivity(intent);
32231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
32331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
32431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_SEARCH_CALL: {
32531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_SEARCH);
32631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.putExtra(SearchManager.ACTION_MSG, "call");
32731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.putExtra(SearchManager.QUERY, "800-4664-411");
32831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                startSearchResultActivity(intent);
32931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
33031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
33131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_SEARCH_CONTACT: {
33231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_SEARCH);
33331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.putExtra(SearchManager.QUERY, "a");
33431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                startSearchResultActivity(intent);
33531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
33631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
33731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_SEARCH_EMAIL: {
33831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_SEARCH);
33931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.putExtra(Insert.EMAIL, "a");
34031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                startSearchResultActivity(intent);
34131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
34231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
34331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_SEARCH_PHONE: {
34431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_SEARCH);
34531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.putExtra(Insert.PHONE, "800");
34631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                startSearchResultActivity(intent);
34731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
34831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
34931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case SEARCH_SUGGESTION_CLICKED_CALL_BUTTON: {
35031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                long contactId = findArbitraryContactWithPhoneNumber();
35131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                if (contactId != -1) {
35231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
35331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    Intent intent = new Intent(Intents.SEARCH_SUGGESTION_CLICKED);
35431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    intent.setData(contactUri);
35531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    intent.putExtra(SearchManager.ACTION_MSG, "call");
356b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                    startContactListActivity(intent);
35731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                }
35831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
35931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
36031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case SEARCH_SUGGESTION_CLICKED_CONTACT: {
36131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                long contactId = findArbitraryContactWithPhoneNumber();
36231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                if (contactId != -1) {
36331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
36431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    Intent intent = new Intent(Intents.SEARCH_SUGGESTION_CLICKED);
36531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    intent.setData(contactUri);
366b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                    startContactListActivity(intent);
36731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                }
36831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
36931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
37031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED: {
37131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intents.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED);
37231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setData(Uri.parse("tel:800-4664411"));
373b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(intent);
37431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
37531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
37631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED: {
37731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intents.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED);
37831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setData(Uri.parse("tel:800-4664411"));
379b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(intent);
38031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
38131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
38231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case JOIN_CONTACT: {
38331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                // TODO
38431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
38531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
38631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_MULTIPLE_PHONES: {
38731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intents.ACTION_GET_MULTIPLE_PHONES);
38831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(Phone.CONTENT_TYPE);
389e8ae9acbde772c94fd7d50b3f65bd3b1278c338bDmitri Plotnikov                intent.putExtra(Intents.EXTRA_PHONE_URIS, new Uri[] {
390e8ae9acbde772c94fd7d50b3f65bd3b1278c338bDmitri Plotnikov                        Uri.parse("tel:555-1212"), Uri.parse("tel:555-2121")
391e8ae9acbde772c94fd7d50b3f65bd3b1278c338bDmitri Plotnikov                });
392e8ae9acbde772c94fd7d50b3f65bd3b1278c338bDmitri Plotnikov                startMultiplePhoneSelectionActivityForResult(intent);
39331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
39431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
39565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_CONTACT: {
39665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
39765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
39865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_EDIT, uri);
39965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(intent);
40065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
40165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
40265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_CONTACT_LOOKUP: {
40365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
40465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
40565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri lookupUri = Contacts.getLookupUri(getContentResolver(), uri);
40665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final String lookupKey = lookupUri.getPathSegments().get(2);
40765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri lookupWithoutIdUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI,
40865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                        lookupKey);
40965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_EDIT, lookupWithoutIdUri);
41065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(intent);
41165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
41265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
41365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_CONTACT_LOOKUP_ID: {
41465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
41565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
41665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri lookupUri = Contacts.getLookupUri(getContentResolver(), uri);
41765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_EDIT, lookupUri);
41865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(intent);
41965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
42065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
42165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_RAW_CONTACT: {
42265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
42365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long rawContactId = findArbitraryRawContactOfContact(contactId);
42465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
42565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_EDIT, uri);
42665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(intent);
42765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
42865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
42965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_LEGACY: {
43065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri legacyContentUri = Uri.parse("content://contacts/people");
43165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
43265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long rawContactId = findArbitraryRawContactOfContact(contactId);
43365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(legacyContentUri, rawContactId);
43465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_EDIT, uri);
43565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(intent);
43665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
43765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
43865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_NEW_CONTACT: {
43965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI));
44065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
44165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
44279bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov            case EDIT_NEW_CONTACT_WITH_DATA: {
44379bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
44479bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov
44586092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov                putDataExtra(intent);
44679bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov
44779bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov                startActivity(intent);
44879bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov                break;
44979bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov            }
4502013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            case EDIT_NEW_CONTACT_FOR_ACCOUNT:
4512013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            case EDIT_NEW_CONTACT_FOR_ACCOUNT_WITH_DATA: {
4522013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                final SelectAccountDialogFragment dialog = new SelectAccountDialogFragment();
4532013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                dialog.setArguments(SelectAccountDialogFragment.createBundle(position));
4542013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                dialog.show(getFragmentManager(), SelectAccountDialogFragment.TAG);
4552013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                break;
4562013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            }
45765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_NEW_RAW_CONTACT: {
45865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(new Intent(Intent.ACTION_INSERT, RawContacts.CONTENT_URI));
45965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
46065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
46165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_NEW_LEGACY: {
46265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri legacyContentUri = Uri.parse("content://contacts/people");
46365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(new Intent(Intent.ACTION_INSERT, legacyContentUri));
46465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
46565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
4663b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            case VIEW_CONTACT: {
4673b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
4683b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
4693b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
4703b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                startActivity(intent);
4713b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                break;
4723b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            }
4733b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            case VIEW_CONTACT_LOOKUP: {
4743b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
4753b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
4763b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri lookupUri = Contacts.getLookupUri(getContentResolver(), uri);
4773b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final String lookupKey = lookupUri.getPathSegments().get(2);
4783b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri lookupWithoutIdUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI,
4793b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                        lookupKey);
4803b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_VIEW, lookupWithoutIdUri);
4813b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                startActivity(intent);
4823b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                break;
4833b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            }
4843b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            case VIEW_CONTACT_LOOKUP_ID: {
4853b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
4863b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
4873b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri lookupUri = Contacts.getLookupUri(getContentResolver(), uri);
4883b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_VIEW, lookupUri);
4893b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                startActivity(intent);
4903b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                break;
4913b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            }
4923b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            case VIEW_RAW_CONTACT: {
4933b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
4943b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long rawContactId = findArbitraryRawContactOfContact(contactId);
4953b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
4963b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
4973b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                startActivity(intent);
4983b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                break;
4993b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            }
5003b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            case VIEW_LEGACY: {
5013b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri legacyContentUri = Uri.parse("content://contacts/people");
5023b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
5033b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long rawContactId = findArbitraryRawContactOfContact(contactId);
5043b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(legacyContentUri, rawContactId);
5053b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
5063b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                startActivity(intent);
5073b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                break;
5083b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            }
509e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case DIAL: {
510e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                startActivity(new Intent(Intent.ACTION_DIAL));
511e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
512e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
513e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case DIAL_phone: {
514e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                // This is the legacy URI (there is no >2.0 way to call a phone data item)
515e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                final long dataId = findArbitraryPhoneDataId();
516e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                if (dataId != -1) {
517e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    final Uri legacyContentUri = Uri.parse("content://contacts/phones");
518e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    final Uri uri = ContentUris.withAppendedId(legacyContentUri, dataId);
519e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    startActivity(new Intent(Intent.ACTION_DIAL, uri));
520e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                }
521e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
522e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
523e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case DIAL_person: {
524e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                // This is the legacy URI (there is no >2.0 way to call a person)
525e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
526e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                if (contactId != -1) {
527e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    final Uri legacyContentUri = Uri.parse("content://contacts/people");
528e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    final long rawContactId = findArbitraryRawContactOfContact(contactId);
529e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    final Uri uri = ContentUris.withAppendedId(legacyContentUri, rawContactId);
530e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    startActivity(new Intent(Intent.ACTION_DIAL, uri));
531e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                }
532e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
533e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
534e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case DIAL_voicemail: {
535e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("voicemail:")));
536e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
537e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
538e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case CALL_BUTTON: {
539e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                startActivity(new Intent(Intent.ACTION_CALL_BUTTON));
540e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
541e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
542e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case DIAL_tel: {
543e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:555-123-4567")));
544e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
545e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
546e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case VIEW_tel: {
547e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("tel:555-123-4567")));
548e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
549e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
55065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            default: {
55165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                Toast.makeText(this, "Sorry, we forgot to write this...", Toast.LENGTH_LONG).show();
55265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
55331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        }
55431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
55531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
5561a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov    private Intent buildFilterIntent(int actionCode, boolean legacy) {
55731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        Intent intent = new Intent(UI.FILTER_CONTACTS_ACTION);
55831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        intent.putExtra(UI.FILTER_TEXT_EXTRA_KEY, "A");
5591a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov        ContactsRequest request = new ContactsRequest();
5601a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov        request.setActionCode(actionCode);
561c9e95f46486bfe2110b890709efb5399a4c6eb49Dmitri Plotnikov        intent.putExtra("originalRequest", request);
56231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        return intent;
56331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
56431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
565b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov    private void startContactListActivity(Intent intent) {
56631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        intent.setComponent(
567b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                new ComponentName(ANDROID_CONTACTS_PACKAGE, CONTACT_LIST_ACTIVITY_CLASS_NAME));
56831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
56931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        startActivity(intent);
57031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
57131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
572b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov    private void startContactSelectionActivityForResult(Intent intent) {
57331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        startActivityForResult(intent, 12);
57431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
57531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
57631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private void startSearchResultActivity(Intent intent) {
57731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        intent.setComponent(
57831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                new ComponentName(ANDROID_CONTACTS_PACKAGE, SEARCH_RESULTS_ACTIVITY_CLASS_NAME));
57931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
58031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        startActivity(intent);
58131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
58231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
583e8ae9acbde772c94fd7d50b3f65bd3b1278c338bDmitri Plotnikov    private void startMultiplePhoneSelectionActivityForResult(Intent intent) {
584e8ae9acbde772c94fd7d50b3f65bd3b1278c338bDmitri Plotnikov        intent.setComponent(
585e8ae9acbde772c94fd7d50b3f65bd3b1278c338bDmitri Plotnikov                new ComponentName(ANDROID_CONTACTS_PACKAGE,
586e8ae9acbde772c94fd7d50b3f65bd3b1278c338bDmitri Plotnikov                        MULTIPLE_PHONE_PICKER_ACTIVITY_CLASS_NAME));
587e8ae9acbde772c94fd7d50b3f65bd3b1278c338bDmitri Plotnikov        startActivityForResult(intent, 13);
588e8ae9acbde772c94fd7d50b3f65bd3b1278c338bDmitri Plotnikov    }
589e8ae9acbde772c94fd7d50b3f65bd3b1278c338bDmitri Plotnikov
59031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    @Override
59131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
59231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        Intent intent = new Intent(this, ResultActivity.class);
59331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        intent.putExtra("resultCode", resultCode);
59431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        intent.putExtra("data", data);
59531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        startActivity(intent);
59631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
59731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
59831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private long findArbitraryContactWithPhoneNumber() {
59965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann        final Cursor cursor = getContentResolver().query(Contacts.CONTENT_URI,
60065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                new String[] { Contacts._ID },
601884e393af339ba1357dd1aea4c8e821396c214b9Dmitri Plotnikov                Contacts.HAS_PHONE_NUMBER + "!=0 AND " + Contacts.STARRED + "!=0" ,
602884e393af339ba1357dd1aea4c8e821396c214b9Dmitri Plotnikov                null, "RANDOM() LIMIT 1");
603e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann        try {
604e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            if (cursor.moveToFirst()) {
605e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                return cursor.getLong(0);
606e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
607e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann        } finally {
608e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            cursor.close();
609e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann        }
610e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann
611e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann        return -1;
612e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann    }
613e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann
614e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann    private long findArbitraryPhoneDataId() {
615e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann        final Cursor cursor = getContentResolver().query(Data.CONTENT_URI,
616e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                new String[] { Data._ID },
617e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                Data.MIMETYPE + "=" + Phone.MIMETYPE,
618e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                null, "RANDOM() LIMIT 1");
61931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        try {
62031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            if (cursor.moveToFirst()) {
62131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                return cursor.getLong(0);
62231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
62331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        } finally {
62431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            cursor.close();
62531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        }
62631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
62731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        return -1;
62831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
62965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann
63065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann    private long findArbitraryRawContactOfContact(long contactId) {
63165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann        final Cursor cursor = getContentResolver().query(RawContacts.CONTENT_URI,
63265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                new String[] { RawContacts._ID },
63365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                RawContacts.CONTACT_ID + "=?",
63465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                new String[] { String.valueOf(contactId) },
63565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                RawContacts._ID + " LIMIT 1");
63665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann        try {
63765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            if (cursor.moveToFirst()) {
63865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                return cursor.getLong(0);
63965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
64065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann        } finally {
64165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            cursor.close();
64265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann        }
64365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann
64465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann        return -1;
64565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann    }
6462013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann
6472013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    @Override
6482013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    public void onAccountChosen(Account account, int tag) {
6492013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann        switch (tag) {
6502013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            case EDIT_NEW_CONTACT_FOR_ACCOUNT: {
6512013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                final Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
6522013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                intent.putExtra(Insert.ACCOUNT, account);
6532013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                startActivity(intent);
6542013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                break;
6552013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            }
6562013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            case EDIT_NEW_CONTACT_FOR_ACCOUNT_WITH_DATA: {
6572013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                final Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
6582013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann
6592013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                intent.putExtra(Insert.ACCOUNT, account);
66086092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov                putDataExtra(intent);
6612013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann
6622013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                startActivity(intent);
6632013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                break;
6642013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            }
6652013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann        }
6662013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    }
66786092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov
66886092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov    public void putDataExtra(final Intent intent) {
66986092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        ContentValues row1 = new ContentValues();
67086092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        row1.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE);
67186092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        row1.put(Organization.COMPANY, "Android");
67286092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov
67386092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        ContentValues row2 = new ContentValues();
67486092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        row2.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
67586092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        row2.put(Email.TYPE, Email.TYPE_CUSTOM);
67686092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        row2.put(Email.LABEL, "Green Bot");
67786092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        row2.put(Email.ADDRESS, "android@android.com");
67886092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov
67986092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        intent.putParcelableArrayListExtra(Insert.DATA, Lists.newArrayList(row1, row2));
68086092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov    }
68131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov}
682