18e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov/* 28e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project 38e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * 48e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License"); 58e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * you may not use this file except in compliance with the License. 68e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * You may obtain a copy of the License at 78e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * 88e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * http://www.apache.org/licenses/LICENSE-2.0 98e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * 108e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * Unless required by applicable law or agreed to in writing, software 118e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS, 128e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * See the License for the specific language governing permissions and 148e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * limitations under the License. 158e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov */ 168e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov 178e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikovpackage com.android.contacts; 188e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov 198e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikovimport android.app.Activity; 208e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikovimport android.content.Intent; 21f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikovimport android.os.Bundle; 228e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikovimport android.provider.ContactsContract; 238e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikovimport android.provider.ContactsContract.Intents.UI; 248e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov 25e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.list.ContactsRequest; 26e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Cheng 278e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov/** 288e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * A convenience class that helps launch contact search from within the app. 298e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov */ 308e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikovpublic class ContactsSearchManager { 318e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov 328e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov /** 338e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * An extra that provides context for search UI and defines the scope for 348e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * the search queries. 358e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov */ 361ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov public static final String ORIGINAL_REQUEST_KEY = "originalRequest"; 371ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov 381ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov /** 398e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * Starts the contact list activity in the search mode. 408e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov */ 418e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov public static void startSearch(Activity context, String initialQuery) { 42df5e05fb93a6bd4b2299dceb7217cfc757b5054eBai Tao context.startActivity(buildIntent(context, initialQuery, null)); 438e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov } 448e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov 458e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov public static void startSearchForResult(Activity context, String initialQuery, 461ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov int requestCode, ContactsRequest originalRequest) { 47df5e05fb93a6bd4b2299dceb7217cfc757b5054eBai Tao context.startActivityForResult( 481ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov buildIntent(context, initialQuery, originalRequest), requestCode); 491ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov } 501ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov 511ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov public static void startSearch(Activity context, String initialQuery, 521ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov ContactsRequest originalRequest) { 531ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov context.startActivity(buildIntent(context, initialQuery, originalRequest)); 548e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov } 558e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov 56df5e05fb93a6bd4b2299dceb7217cfc757b5054eBai Tao private static Intent buildIntent( 571ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov Activity context, String initialQuery, ContactsRequest originalRequest) { 588e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov Intent intent = new Intent(); 598e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov intent.setData(ContactsContract.Contacts.CONTENT_URI); 608e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov intent.setAction(UI.FILTER_CONTACTS_ACTION); 61f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikov 62f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikov Intent originalIntent = context.getIntent(); 63f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikov Bundle originalExtras = originalIntent.getExtras(); 64f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikov if (originalExtras != null) { 65f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikov intent.putExtras(originalExtras); 66f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikov } 678e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov intent.putExtra(UI.FILTER_TEXT_EXTRA_KEY, initialQuery); 681ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov if (originalRequest != null) { 691ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov intent.putExtra(ORIGINAL_REQUEST_KEY, originalRequest); 70df5e05fb93a6bd4b2299dceb7217cfc757b5054eBai Tao } 718e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov return intent; 728e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov } 738e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov} 74