AllIntentsActivity.java revision bc2497a8afc5587098b2f6c50b4fc422235ee33c
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
192b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoroimport com.android.contacts.model.AccountWithDataSet;
2031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport com.android.contacts.tests.R;
2179bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikovimport com.google.android.collect.Lists;
2231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
2331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.app.ListActivity;
2431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.app.SearchManager;
2531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.content.ComponentName;
2631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.content.ContentUris;
2779bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikovimport android.content.ContentValues;
2831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.content.Intent;
2931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.database.Cursor;
3031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.net.Uri;
3131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikovimport android.os.Bundle;
32a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerdaimport android.provider.CallLog.Calls;
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
59a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda    /** The name of the package of the contacts application. */
6031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private static final String ANDROID_CONTACTS_PACKAGE = "com.android.contacts";
6131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
62b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov    private static final String CONTACT_LIST_ACTIVITY_CLASS_NAME =
635e684a424e7036ba3d379221d1889b4dd7265021Dave Santoro            "com.android.contacts.activities.PeopleActivity";
6431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
65fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov    public enum ContactsIntent {
66fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        LIST_DEFAULT,
67fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        LIST_ALL_CONTACTS_ACTION,
68fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        LIST_CONTACTS_WITH_PHONES_ACTION,
69fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        LIST_STARRED_ACTION,
70fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        LIST_FREQUENT_ACTION,
71fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        LIST_STREQUENT_ACTION,
72ea14605e56c98fcaa93f2f1e4186ce9db5e2f159Makoto Onuki        LIST_GROUP_ACTION,
73f0c4681ee4191e47103f8699dd1bf9cf7fc8b669Daisuke Miyakawa        VIEW_CONTACT_WITHOUT_ID,
74fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_PICK_CONTACT,
75fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_PICK_CONTACT_LEGACY,
76fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_PICK_PHONE,
77fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_PICK_PHONE_LEGACY,
78fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_PICK_POSTAL,
79fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_PICK_POSTAL_LEGACY,
80c86ace78ca5c2e10dcb001a916386c8a9865e230Daniel Lehmann        ACTION_PICK_EMAIL,
81fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_CREATE_SHORTCUT_CONTACT,
82fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_CREATE_SHORTCUT_DIAL,
83fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_CREATE_SHORTCUT_MESSAGE,
84fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_GET_CONTENT_CONTACT,
85fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_GET_CONTENT_CONTACT_LEGACY,
86fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_GET_CONTENT_PHONE,
87fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_GET_CONTENT_PHONE_LEGACY,
88fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_GET_CONTENT_POSTAL,
89fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_GET_CONTENT_POSTAL_LEGACY,
90fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_INSERT_OR_EDIT,
91fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_SEARCH_CALL,
92fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_SEARCH_CONTACT,
93fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_SEARCH_EMAIL,
94fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        ACTION_SEARCH_PHONE,
95fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        SEARCH_SUGGESTION_CLICKED_CALL_BUTTON,
96fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        SEARCH_SUGGESTION_CLICKED_CONTACT,
97fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED,
98fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED,
99fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        JOIN_CONTACT,
100fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        EDIT_CONTACT,
101fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        EDIT_CONTACT_LOOKUP,
102fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        EDIT_CONTACT_LOOKUP_ID,
103fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        EDIT_RAW_CONTACT,
104fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        EDIT_LEGACY,
105fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        EDIT_NEW_CONTACT,
106fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        EDIT_NEW_CONTACT_WITH_DATA,
107fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        EDIT_NEW_CONTACT_FOR_ACCOUNT,
108fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        EDIT_NEW_CONTACT_FOR_ACCOUNT_WITH_DATA,
109fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        EDIT_NEW_RAW_CONTACT,
110fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        EDIT_NEW_LEGACY,
111fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        VIEW_CONTACT,
112fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        VIEW_CONTACT_LOOKUP,
113fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        VIEW_CONTACT_LOOKUP_ID,
114fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        VIEW_RAW_CONTACT,
115fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        VIEW_LEGACY,
116fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        DIAL,
117fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        DIAL_phone,
118fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        DIAL_person,
119fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        DIAL_voicemail,
120fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        CALL_BUTTON,
121fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        DIAL_tel,
122fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        VIEW_tel,
123a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda        VIEW_calllog,
124a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda        VIEW_calllog_entry,
125a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda        LEGACY_CALL_DETAILS_ACTIVITY,
126a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda        LEGACY_CALL_LOG_ACTIVITY;
127fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov
128fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        public static ContactsIntent get(int ordinal) {
129fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov            return values()[ordinal];
130fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        }
131fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov    }
132e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann
13331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    @Override
13431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    protected void onCreate(Bundle savedInstanceState) {
13531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        super.onCreate(savedInstanceState);
13631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        setListAdapter(new ArrayAdapter<String>(this, R.layout.intent_list_item,
13731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                getResources().getStringArray(R.array.allIntents)));
13831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
13931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
14031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    @Override
14131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    protected void onListItemClick(ListView l, View v, int position, long id) {
14231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        super.onListItemClick(l, v, position, id);
14331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
144fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        switch (ContactsIntent.get(position)) {
14531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_DEFAULT: {
146b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
147ea14605e56c98fcaa93f2f1e4186ce9db5e2f159Makoto Onuki                        new Intent(UI.LIST_DEFAULT, Contacts.CONTENT_URI));
14831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
14931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
15031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_ALL_CONTACTS_ACTION: {
151b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
15231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(UI.LIST_ALL_CONTACTS_ACTION, Contacts.CONTENT_URI));
15331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
15431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
15531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_CONTACTS_WITH_PHONES_ACTION: {
156b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
15731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(UI.LIST_CONTACTS_WITH_PHONES_ACTION, Contacts.CONTENT_URI));
15831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
15931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
16031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_STARRED_ACTION: {
161b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
16231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(UI.LIST_STARRED_ACTION, Contacts.CONTENT_URI));
16331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
16431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
16531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_FREQUENT_ACTION: {
166b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
16731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(UI.LIST_FREQUENT_ACTION, Contacts.CONTENT_URI));
16831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
16931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
17031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case LIST_STREQUENT_ACTION: {
171b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(
17231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(UI.LIST_STREQUENT_ACTION, Contacts.CONTENT_URI));
173ea14605e56c98fcaa93f2f1e4186ce9db5e2f159Makoto Onuki                break;
174ea14605e56c98fcaa93f2f1e4186ce9db5e2f159Makoto Onuki            }
175ea14605e56c98fcaa93f2f1e4186ce9db5e2f159Makoto Onuki            case LIST_GROUP_ACTION: {
176ea14605e56c98fcaa93f2f1e4186ce9db5e2f159Makoto Onuki                startContactListActivity(
177ea14605e56c98fcaa93f2f1e4186ce9db5e2f159Makoto Onuki                        new Intent(UI.LIST_GROUP_ACTION, Contacts.CONTENT_URI));
17831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
17931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
18031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_PICK_CONTACT: {
181b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
18231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI));
18331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
18431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
18531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_PICK_CONTACT_LEGACY: {
186b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
18731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(Intent.ACTION_PICK, People.CONTENT_URI));
18831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
18931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
19031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_PICK_PHONE: {
191b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
19231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(Intent.ACTION_PICK, Phone.CONTENT_URI));
19331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
19431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
19531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_PICK_PHONE_LEGACY: {
196b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
19731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(Intent.ACTION_PICK, Phones.CONTENT_URI));
19831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
19931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
20031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_PICK_POSTAL: {
201b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(
20231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                        new Intent(Intent.ACTION_PICK, StructuredPostal.CONTENT_URI));
20331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
20431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
20531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_PICK_POSTAL_LEGACY: {
20631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_PICK);
20731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(ContactMethods.CONTENT_POSTAL_TYPE);
208b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
20931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
21031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
211c86ace78ca5c2e10dcb001a916386c8a9865e230Daniel Lehmann            case ACTION_PICK_EMAIL: {
212c86ace78ca5c2e10dcb001a916386c8a9865e230Daniel Lehmann                startContactSelectionActivityForResult(
213c86ace78ca5c2e10dcb001a916386c8a9865e230Daniel Lehmann                        new Intent(Intent.ACTION_PICK, Email.CONTENT_URI));
214c86ace78ca5c2e10dcb001a916386c8a9865e230Daniel Lehmann                break;
215c86ace78ca5c2e10dcb001a916386c8a9865e230Daniel Lehmann            }
21631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_CREATE_SHORTCUT_CONTACT: {
21731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
218b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
21931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
22031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
22131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_CREATE_SHORTCUT_DIAL: {
22231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
223a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                bindIntentToClass(intent, "alias.DialShortcut");
22431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                startActivityForResult(intent, 0);
22531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
22631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
22731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_CREATE_SHORTCUT_MESSAGE: {
22831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
229a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                bindIntentToClass(intent, "alias.MessageShortcut");
23031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                startActivityForResult(intent, 0);
23131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
23231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
23331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_CONTACT: {
23431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
23531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(Contacts.CONTENT_ITEM_TYPE);
236b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
23731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
23831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
23931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_CONTACT_LEGACY: {
24031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
24131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(People.CONTENT_ITEM_TYPE);
242b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
24331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
24431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
24531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_PHONE: {
24631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
24731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(Phone.CONTENT_ITEM_TYPE);
248b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
24931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
25031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
25131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_PHONE_LEGACY: {
25231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
25331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(Phones.CONTENT_ITEM_TYPE);
254b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
25531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
25631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
25731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_POSTAL: {
25831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
25931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(StructuredPostal.CONTENT_ITEM_TYPE);
260b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
26131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
26231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
26331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_GET_CONTENT_POSTAL_LEGACY: {
26431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
26531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setType(ContactMethods.CONTENT_POSTAL_ITEM_TYPE);
266b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactSelectionActivityForResult(intent);
26731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
26831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
26931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_INSERT_OR_EDIT: {
27031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
27186092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov                intent.setType(Contacts.CONTENT_ITEM_TYPE);
27286092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov                putDataExtra(intent);
27386092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov                startActivity(intent);
27431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
27531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
27631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_SEARCH_CALL: {
27731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_SEARCH);
27831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.putExtra(SearchManager.ACTION_MSG, "call");
27931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.putExtra(SearchManager.QUERY, "800-4664-411");
28031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                startSearchResultActivity(intent);
28131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
28231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
28331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_SEARCH_CONTACT: {
28431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_SEARCH);
28531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.putExtra(SearchManager.QUERY, "a");
2867b8f74678640b571196557d64dd712dc4a109c49Dmitri Plotnikov                intent.setType(Contacts.CONTENT_TYPE);
28731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                startSearchResultActivity(intent);
28831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
28931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
29031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_SEARCH_EMAIL: {
2917b8f74678640b571196557d64dd712dc4a109c49Dmitri Plotnikov                Toast.makeText(this, "Unsupported", Toast.LENGTH_SHORT).show();
29231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
29331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
29431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case ACTION_SEARCH_PHONE: {
2957b8f74678640b571196557d64dd712dc4a109c49Dmitri Plotnikov                Toast.makeText(this, "Unsupported", Toast.LENGTH_SHORT).show();
29631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
29731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
29831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case SEARCH_SUGGESTION_CLICKED_CALL_BUTTON: {
29931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                long contactId = findArbitraryContactWithPhoneNumber();
30031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                if (contactId != -1) {
30131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
30231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    Intent intent = new Intent(Intents.SEARCH_SUGGESTION_CLICKED);
30331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    intent.setData(contactUri);
30431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    intent.putExtra(SearchManager.ACTION_MSG, "call");
305b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                    startContactListActivity(intent);
30631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                }
30731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
30831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
30931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case SEARCH_SUGGESTION_CLICKED_CONTACT: {
31031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                long contactId = findArbitraryContactWithPhoneNumber();
31131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                if (contactId != -1) {
31231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
31331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    Intent intent = new Intent(Intents.SEARCH_SUGGESTION_CLICKED);
31431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                    intent.setData(contactUri);
315b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                    startContactListActivity(intent);
31631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                }
31731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
31831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
31931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED: {
32031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intents.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED);
32131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setData(Uri.parse("tel:800-4664411"));
322b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(intent);
32331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
32431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
32531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED: {
32631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                Intent intent = new Intent(Intents.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED);
32731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                intent.setData(Uri.parse("tel:800-4664411"));
328b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov                startContactListActivity(intent);
32931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
33031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
33131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            case JOIN_CONTACT: {
33231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                // TODO
33331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                break;
33431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
33565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_CONTACT: {
33665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
33765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
33865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_EDIT, uri);
33965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(intent);
34065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
34165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
34265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_CONTACT_LOOKUP: {
34365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
34465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
34565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri lookupUri = Contacts.getLookupUri(getContentResolver(), uri);
34665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final String lookupKey = lookupUri.getPathSegments().get(2);
34765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri lookupWithoutIdUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI,
34865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                        lookupKey);
34965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_EDIT, lookupWithoutIdUri);
35065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(intent);
35165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
35265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
35365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_CONTACT_LOOKUP_ID: {
35465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
35565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
35665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri lookupUri = Contacts.getLookupUri(getContentResolver(), uri);
35765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_EDIT, lookupUri);
35865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(intent);
35965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
36065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
36165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_RAW_CONTACT: {
36265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
36365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long rawContactId = findArbitraryRawContactOfContact(contactId);
36465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
36565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_EDIT, uri);
36665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(intent);
36765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
36865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
36965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_LEGACY: {
37065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri legacyContentUri = Uri.parse("content://contacts/people");
37165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
37265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final long rawContactId = findArbitraryRawContactOfContact(contactId);
37365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(legacyContentUri, rawContactId);
37465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_EDIT, uri);
37565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(intent);
37665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
37765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
37865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_NEW_CONTACT: {
37965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI));
38065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
38165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
38279bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov            case EDIT_NEW_CONTACT_WITH_DATA: {
38379bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov                Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
38479bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov
38586092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov                putDataExtra(intent);
38679bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov
38779bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov                startActivity(intent);
38879bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov                break;
38979bea93fe361aac5b4928ef090b5021bcba99428Dmitri Plotnikov            }
3902013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            case EDIT_NEW_CONTACT_FOR_ACCOUNT:
3912013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            case EDIT_NEW_CONTACT_FOR_ACCOUNT_WITH_DATA: {
3922013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                final SelectAccountDialogFragment dialog = new SelectAccountDialogFragment();
3932013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                dialog.setArguments(SelectAccountDialogFragment.createBundle(position));
3942013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                dialog.show(getFragmentManager(), SelectAccountDialogFragment.TAG);
3952013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                break;
3962013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            }
39765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_NEW_RAW_CONTACT: {
39865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(new Intent(Intent.ACTION_INSERT, RawContacts.CONTENT_URI));
39965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
40065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
40165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            case EDIT_NEW_LEGACY: {
40265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                final Uri legacyContentUri = Uri.parse("content://contacts/people");
40365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                startActivity(new Intent(Intent.ACTION_INSERT, legacyContentUri));
40465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                break;
40565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
4063b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            case VIEW_CONTACT: {
4073b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
4083b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
4093b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
4103b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                startActivity(intent);
4113b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                break;
4123b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            }
413f0c4681ee4191e47103f8699dd1bf9cf7fc8b669Daisuke Miyakawa            case VIEW_CONTACT_WITHOUT_ID: {
414f0c4681ee4191e47103f8699dd1bf9cf7fc8b669Daisuke Miyakawa                startActivity(new Intent(Intent.ACTION_VIEW, Contacts.CONTENT_URI));
415f0c4681ee4191e47103f8699dd1bf9cf7fc8b669Daisuke Miyakawa                break;
416f0c4681ee4191e47103f8699dd1bf9cf7fc8b669Daisuke Miyakawa            }
4173b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            case VIEW_CONTACT_LOOKUP: {
4183b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
4193b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
4203b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri lookupUri = Contacts.getLookupUri(getContentResolver(), uri);
4213b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final String lookupKey = lookupUri.getPathSegments().get(2);
4223b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri lookupWithoutIdUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI,
4233b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                        lookupKey);
4243b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_VIEW, lookupWithoutIdUri);
4253b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                startActivity(intent);
4263b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                break;
4273b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            }
4283b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            case VIEW_CONTACT_LOOKUP_ID: {
4293b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
4303b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
4313b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri lookupUri = Contacts.getLookupUri(getContentResolver(), uri);
4323b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_VIEW, lookupUri);
4333b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                startActivity(intent);
4343b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                break;
4353b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            }
4363b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            case VIEW_RAW_CONTACT: {
4373b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
4383b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long rawContactId = findArbitraryRawContactOfContact(contactId);
4393b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
4403b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
4413b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                startActivity(intent);
4423b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                break;
4433b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            }
4443b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            case VIEW_LEGACY: {
4453b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri legacyContentUri = Uri.parse("content://contacts/people");
4463b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
4473b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final long rawContactId = findArbitraryRawContactOfContact(contactId);
4483b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Uri uri = ContentUris.withAppendedId(legacyContentUri, rawContactId);
4493b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
4503b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                startActivity(intent);
4513b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann                break;
4523b7d5949bfa524534e5d1aa29b8eaff8733ae00cDaniel Lehmann            }
453e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case DIAL: {
454e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                startActivity(new Intent(Intent.ACTION_DIAL));
455e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
456e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
457e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case DIAL_phone: {
458e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                // This is the legacy URI (there is no >2.0 way to call a phone data item)
459e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                final long dataId = findArbitraryPhoneDataId();
460e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                if (dataId != -1) {
461e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    final Uri legacyContentUri = Uri.parse("content://contacts/phones");
462e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    final Uri uri = ContentUris.withAppendedId(legacyContentUri, dataId);
463e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    startActivity(new Intent(Intent.ACTION_DIAL, uri));
464e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                }
465e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
466e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
467e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case DIAL_person: {
468e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                // This is the legacy URI (there is no >2.0 way to call a person)
469e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                final long contactId = findArbitraryContactWithPhoneNumber();
470e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                if (contactId != -1) {
471e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    final Uri legacyContentUri = Uri.parse("content://contacts/people");
472e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    final long rawContactId = findArbitraryRawContactOfContact(contactId);
473e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    final Uri uri = ContentUris.withAppendedId(legacyContentUri, rawContactId);
474e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                    startActivity(new Intent(Intent.ACTION_DIAL, uri));
475e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                }
476e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
477e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
478e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case DIAL_voicemail: {
479e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("voicemail:")));
480e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
481e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
482e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case CALL_BUTTON: {
483e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                startActivity(new Intent(Intent.ACTION_CALL_BUTTON));
484e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
485e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
486e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case DIAL_tel: {
487e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:555-123-4567")));
488e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
489e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
490e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            case VIEW_tel: {
491e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("tel:555-123-4567")));
492e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                break;
493e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
494a126cddda7a8df442a1c4d63b4412d50c83725a6Daniel Lehmann            case VIEW_calllog: {
495a126cddda7a8df442a1c4d63b4412d50c83725a6Daniel Lehmann                final Intent intent = new Intent(Intent.ACTION_VIEW, null);
496a126cddda7a8df442a1c4d63b4412d50c83725a6Daniel Lehmann                intent.setType("vnd.android.cursor.dir/calls");
497a126cddda7a8df442a1c4d63b4412d50c83725a6Daniel Lehmann                startActivity(intent);
498a126cddda7a8df442a1c4d63b4412d50c83725a6Daniel Lehmann                break;
499a126cddda7a8df442a1c4d63b4412d50c83725a6Daniel Lehmann            }
500a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda            case VIEW_calllog_entry: {
501a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                Uri uri = getCallLogUri();
502a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                if (uri == null) {
503a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                    Toast.makeText(this, "Call log is empty", Toast.LENGTH_LONG).show();
504a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                    break;
505a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                }
506a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                final Intent intent = new Intent(Intent.ACTION_VIEW);
507a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                intent.setData(uri);
508a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                startActivity(intent);
509a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                break;
510a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda            }
511a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda            case LEGACY_CALL_DETAILS_ACTIVITY: {
512a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                Uri uri = getCallLogUri();
513a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                if (uri == null) {
514a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                    Toast.makeText(this, "Call log is empty", Toast.LENGTH_LONG).show();
515a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                    break;
516a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                }
517a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                final Intent intent = new Intent("android.intent.action.VIEW");
518a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                intent.setData(uri);
519bc2497a8afc5587098b2f6c50b4fc422235ee33cFlavio Lerda                bindIntentToClass(intent, "com.android.contacts.CallDetailActivity");
520a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                startActivity(intent);
521a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                break;
522a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda            }
523a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda            case LEGACY_CALL_LOG_ACTIVITY: {
524bc2497a8afc5587098b2f6c50b4fc422235ee33cFlavio Lerda                startActivity(bindIntentToClass(new Intent(),
525bc2497a8afc5587098b2f6c50b4fc422235ee33cFlavio Lerda                        "com.android.contacts.activities.CallLogActivity"));
526a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                break;
527a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda            }
528a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda
52965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            default: {
53065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                Toast.makeText(this, "Sorry, we forgot to write this...", Toast.LENGTH_LONG).show();
53165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
53231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        }
53331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
53431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
535a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda    /** Returns the URI of one of the items in the call log, or null if the call log is empty. */
536a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda    private Uri getCallLogUri() {
537a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda        Cursor cursor = getContentResolver().query(
538a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                Calls.CONTENT_URI, new String[]{ Calls._ID }, null, null,
539a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda                Calls.DEFAULT_SORT_ORDER);
540a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda        if (!cursor.moveToNext()) {
541a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda            return null;
542a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda        }
543a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda        return ContentUris.withAppendedId(Calls.CONTENT_URI, cursor.getLong(0));
544a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda    }
545a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda
546a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda    /** Creates an intent that is bound to a specific activity by name. */
547a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda    private Intent bindIntentToClass(Intent intent, String activityClassName) {
548a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda        intent.setComponent(new ComponentName(ANDROID_CONTACTS_PACKAGE, activityClassName));
549a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda        return intent;
550a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda    }
551a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda
5521a222007768e555f38fa8875ffc73c8a83a266afDmitri Plotnikov    private Intent buildFilterIntent(int actionCode, boolean legacy) {
55331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        Intent intent = new Intent(UI.FILTER_CONTACTS_ACTION);
55431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        intent.putExtra(UI.FILTER_TEXT_EXTRA_KEY, "A");
555fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov//        ContactsRequest request = new ContactsRequest();
556fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov//        request.setActionCode(actionCode);
557fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov//        intent.putExtra("originalRequest", request);
55831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        return intent;
55931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
56031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
561b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov    private void startContactListActivity(Intent intent) {
562a4aa90ce861ea56f403aa244905c9a4e326f2a10Flavio Lerda        bindIntentToClass(intent, CONTACT_LIST_ACTIVITY_CLASS_NAME);
56331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
56431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        startActivity(intent);
56531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
56631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
567b979b4294c14f2bc562a5279910bafb7ac1a92b4Dmitri Plotnikov    private void startContactSelectionActivityForResult(Intent intent) {
56831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        startActivityForResult(intent, 12);
56931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
57031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
57131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private void startSearchResultActivity(Intent intent) {
57231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
57331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        startActivity(intent);
57431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
57531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
57631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    @Override
57731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
57831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        Intent intent = new Intent(this, ResultActivity.class);
57931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        intent.putExtra("resultCode", resultCode);
58031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        intent.putExtra("data", data);
58131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        startActivity(intent);
58231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
58331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
58431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    private long findArbitraryContactWithPhoneNumber() {
58565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann        final Cursor cursor = getContentResolver().query(Contacts.CONTENT_URI,
58665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                new String[] { Contacts._ID },
587884e393af339ba1357dd1aea4c8e821396c214b9Dmitri Plotnikov                Contacts.HAS_PHONE_NUMBER + "!=0 AND " + Contacts.STARRED + "!=0" ,
588884e393af339ba1357dd1aea4c8e821396c214b9Dmitri Plotnikov                null, "RANDOM() LIMIT 1");
589e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann        try {
590e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            if (cursor.moveToFirst()) {
591e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                return cursor.getLong(0);
592e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            }
593e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann        } finally {
594e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann            cursor.close();
595e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann        }
596e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann
597e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann        return -1;
598e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann    }
599e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann
600e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann    private long findArbitraryPhoneDataId() {
601e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann        final Cursor cursor = getContentResolver().query(Data.CONTENT_URI,
602e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                new String[] { Data._ID },
603e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                Data.MIMETYPE + "=" + Phone.MIMETYPE,
604e9b196e446cc34f690a043c5f5d9e5a7b8b92b3fDaniel Lehmann                null, "RANDOM() LIMIT 1");
60531ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        try {
60631ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            if (cursor.moveToFirst()) {
60731ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov                return cursor.getLong(0);
60831ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            }
60931ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        } finally {
61031ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov            cursor.close();
61131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        }
61231ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov
61331ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov        return -1;
61431ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov    }
61565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann
61665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann    private long findArbitraryRawContactOfContact(long contactId) {
61765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann        final Cursor cursor = getContentResolver().query(RawContacts.CONTENT_URI,
61865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                new String[] { RawContacts._ID },
61965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                RawContacts.CONTACT_ID + "=?",
62065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                new String[] { String.valueOf(contactId) },
62165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                RawContacts._ID + " LIMIT 1");
62265c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann        try {
62365c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            if (cursor.moveToFirst()) {
62465c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann                return cursor.getLong(0);
62565c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            }
62665c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann        } finally {
62765c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann            cursor.close();
62865c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann        }
62965c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann
63065c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann        return -1;
63165c90e23a0c141d390fc2177a1b461646f4f8a3aDaniel Lehmann    }
6322013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann
6332013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    @Override
6342b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro    public void onAccountChosen(AccountWithDataSet account, int tag) {
635fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov        switch (ContactsIntent.get(tag)) {
6362013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            case EDIT_NEW_CONTACT_FOR_ACCOUNT: {
6372013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                final Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
6382013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                intent.putExtra(Insert.ACCOUNT, account);
6392b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro                intent.putExtra(Insert.DATA_SET, account.dataSet);
6402013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                startActivity(intent);
6412013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                break;
6422013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            }
6432013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            case EDIT_NEW_CONTACT_FOR_ACCOUNT_WITH_DATA: {
6442013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                final Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
6452013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann
6462013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                intent.putExtra(Insert.ACCOUNT, account);
6472b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro                intent.putExtra(Insert.DATA_SET, account.dataSet);
64886092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov                putDataExtra(intent);
6492013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann
6502013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                startActivity(intent);
6512013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann                break;
6522013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann            }
653fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov            default:
654fa49a66979567894c85fe2489d1375216d67597eDmitri Plotnikov                break;
6552013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann        }
6562013058703aa110a1d7aac87ef408c96a3919472Daniel Lehmann    }
65786092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov
65886092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov    public void putDataExtra(final Intent intent) {
65986092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        ContentValues row1 = new ContentValues();
66086092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        row1.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE);
66186092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        row1.put(Organization.COMPANY, "Android");
66286092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov
66386092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        ContentValues row2 = new ContentValues();
66486092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        row2.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
66586092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        row2.put(Email.TYPE, Email.TYPE_CUSTOM);
66686092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        row2.put(Email.LABEL, "Green Bot");
66786092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        row2.put(Email.ADDRESS, "android@android.com");
66886092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov
66986092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov        intent.putParcelableArrayListExtra(Insert.DATA, Lists.newArrayList(row1, row2));
67086092529f272b7ed2cee24fae397291696b29b80Dmitri Plotnikov    }
67131ec0b51ac4d508f8727608b98d0bf916f2b20b9Dmitri Plotnikov}
672