/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.example.android.basiccontactables; import android.app.Activity; import android.app.SearchManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.widget.SearchView; /** * Simple one-activity app that takes a search term via the Action Bar * and uses it as a query to search the contacts database via the Contactables * table. */ public class MainActivity extends Activity { public static final int CONTACT_QUERY_LOADER = 0; public static final String QUERY_KEY = "query"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sample_main); if (getIntent() != null) { handleIntent(getIntent()); } } @Override protected void onNewIntent(Intent intent) { handleIntent(intent); } /** * Assuming this activity was started with a new intent, process the incoming information and * react accordingly. * @param intent */ private void handleIntent(Intent intent) { // Special processing of the incoming intent only occurs if the if the action specified // by the intent is ACTION_SEARCH. if (Intent.ACTION_SEARCH.equals(intent.getAction())) { // SearchManager.QUERY is the key that a SearchManager will use to send a query string // to an Activity. String query = intent.getStringExtra(SearchManager.QUERY); // We need to create a bundle containing the query string to send along to the // LoaderManager, which will be handling querying the database and returning results. Bundle bundle = new Bundle(); bundle.putString(QUERY_KEY, query); ContactablesLoaderCallbacks loaderCallbacks = new ContactablesLoaderCallbacks(this); // Start the loader with the new query, and an object that will handle all callbacks. getLoaderManager().restartLoader(CONTACT_QUERY_LOADER, bundle, loaderCallbacks); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); // Associate searchable configuration with the SearchView SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView(); searchView.setSearchableInfo( searchManager.getSearchableInfo(getComponentName())); return true; } }