diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index dafe4c2..2a4f3d1 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -122,12 +122,6 @@
             </intent-filter>
 
             <intent-filter>
-                <action android:name="com.android.contacts.action.FILTER_CONTACTS" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <data android:mimeType="vnd.android.cursor.dir/contact" />
-            </intent-filter>
-
-            <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:mimeType="vnd.android.cursor.dir/person" />
diff --git a/src/com/android/contacts/ContactsSearchManager.java b/src/com/android/contacts/ContactsSearchManager.java
deleted file mode 100644
index cadd2ce..0000000
--- a/src/com/android/contacts/ContactsSearchManager.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2010 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.android.contacts;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.provider.ContactsContract;
-
-import com.android.contacts.list.ContactsRequest;
-import com.android.contacts.list.UiIntentActions;
-
-/**
- * A convenience class that helps launch contact search from within the app.
- */
-public class ContactsSearchManager {
-
-    /**
-     * An extra that provides context for search UI and defines the scope for
-     * the search queries.
-     */
-    public static final String ORIGINAL_REQUEST_KEY = "originalRequest";
-
-    /**
-     * Starts the contact list activity in the search mode.
-     */
-    public static void startSearch(Activity context, String initialQuery) {
-        context.startActivity(buildIntent(context, initialQuery, null));
-    }
-
-    public static void startSearchForResult(Activity context, String initialQuery,
-            int requestCode, ContactsRequest originalRequest) {
-        context.startActivityForResult(
-                buildIntent(context, initialQuery, originalRequest), requestCode);
-    }
-
-    public static void startSearch(Activity context, String initialQuery,
-            ContactsRequest originalRequest) {
-        context.startActivity(buildIntent(context, initialQuery, originalRequest));
-    }
-
-    private static Intent buildIntent(
-            Activity context, String initialQuery, ContactsRequest originalRequest) {
-        Intent intent = new Intent();
-        intent.setData(ContactsContract.Contacts.CONTENT_URI);
-        intent.setAction(UiIntentActions.FILTER_CONTACTS_ACTION);
-
-        Intent originalIntent = context.getIntent();
-        Bundle originalExtras = originalIntent.getExtras();
-        if (originalExtras != null) {
-            intent.putExtras(originalExtras);
-        }
-        intent.putExtra(UiIntentActions.FILTER_TEXT_EXTRA_KEY, initialQuery);
-        if (originalRequest != null) {
-            intent.putExtra(ORIGINAL_REQUEST_KEY, originalRequest);
-        }
-        return intent;
-    }
-}
diff --git a/src/com/android/contacts/list/ContactsIntentResolver.java b/src/com/android/contacts/list/ContactsIntentResolver.java
index b6bcb31..259e0c7 100644
--- a/src/com/android/contacts/list/ContactsIntentResolver.java
+++ b/src/com/android/contacts/list/ContactsIntentResolver.java
@@ -16,13 +16,10 @@
 
 package com.android.contacts.list;
 
-import com.android.contacts.ContactsSearchManager;
-
 import android.app.Activity;
 import android.app.SearchManager;
 import android.content.Intent;
 import android.net.Uri;
-import android.os.Bundle;
 import android.provider.Contacts.ContactMethods;
 import android.provider.Contacts.People;
 import android.provider.Contacts.Phones;
@@ -145,24 +142,6 @@
                 intent.setAction(Intent.ACTION_DEFAULT);
                 intent.setData(null);
             }
-        } else if (UiIntentActions.FILTER_CONTACTS_ACTION.equals(action)) {
-            // When we get a FILTER_CONTACTS_ACTION, it represents search in the context
-            // of some other action. Let's retrieve the original action to provide proper
-            // context for the search queries.
-            request.setActionCode(ContactsRequest.ACTION_DEFAULT);
-            Bundle extras = intent.getExtras();
-            if (extras != null) {
-                request.setQueryString(extras.getString(UiIntentActions.FILTER_TEXT_EXTRA_KEY));
-
-                ContactsRequest originalRequest =
-                        (ContactsRequest)extras.get(ContactsSearchManager.ORIGINAL_REQUEST_KEY);
-                if (originalRequest != null) {
-                    request.copyFrom(originalRequest);
-                }
-            }
-
-            request.setSearchMode(true);
-
         // Since this is the filter activity it receives all intents
         // dispatched from the SearchManager for security reasons
         // so we need to re-dispatch from here to the intended target.
diff --git a/src/com/android/contacts/list/ContactsRequest.java b/src/com/android/contacts/list/ContactsRequest.java
index 7955fde..68b06fa 100644
--- a/src/com/android/contacts/list/ContactsRequest.java
+++ b/src/com/android/contacts/list/ContactsRequest.java
@@ -24,7 +24,7 @@
 /**
  * Parsed form of the intent sent to the Contacts application.
  */
-public class ContactsRequest implements Parcelable {
+public class ContactsRequest {
 
     /** Default mode: browse contacts */
     public static final int ACTION_DEFAULT = 10;
@@ -106,62 +106,6 @@
                 + "}";
     }
 
-    /**
-     * Copies all fields.
-     */
-    public void copyFrom(ContactsRequest request) {
-        mValid = request.mValid;
-        mActionCode = request.mActionCode;
-        mRedirectIntent = request.mRedirectIntent;
-        mTitle = request.mTitle;
-        mSearchMode = request.mSearchMode;
-        mQueryString = request.mQueryString;
-        mIncludeProfile = request.mIncludeProfile;
-        mLegacyCompatibilityMode = request.mLegacyCompatibilityMode;
-        mDirectorySearchEnabled = request.mDirectorySearchEnabled;
-        mContactUri = request.mContactUri;
-    }
-
-    public static Parcelable.Creator<ContactsRequest> CREATOR = new Creator<ContactsRequest>() {
-
-        public ContactsRequest[] newArray(int size) {
-            return new ContactsRequest[size];
-        }
-
-        public ContactsRequest createFromParcel(Parcel source) {
-            ClassLoader classLoader = this.getClass().getClassLoader();
-            ContactsRequest request = new ContactsRequest();
-            request.mValid = source.readInt() != 0;
-            request.mActionCode = source.readInt();
-            request.mRedirectIntent = source.readParcelable(classLoader);
-            request.mTitle = source.readCharSequence();
-            request.mSearchMode = source.readInt() != 0;
-            request.mQueryString = source.readString();
-            request.mIncludeProfile = source.readInt() != 0;
-            request.mLegacyCompatibilityMode  = source.readInt() != 0;
-            request.mDirectorySearchEnabled = source.readInt() != 0;
-            request.mContactUri = source.readParcelable(classLoader);
-            return request;
-        }
-    };
-
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeInt(mValid ? 1 : 0);
-        dest.writeInt(mActionCode);
-        dest.writeParcelable(mRedirectIntent, 0);
-        dest.writeCharSequence(mTitle);
-        dest.writeInt(mSearchMode ? 1 : 0);
-        dest.writeString(mQueryString);
-        dest.writeInt(mIncludeProfile ? 1 : 0);
-        dest.writeInt(mLegacyCompatibilityMode ? 1 : 0);
-        dest.writeInt(mDirectorySearchEnabled ? 1 : 0);
-        dest.writeParcelable(mContactUri, 0);
-    }
-
-    public int describeContents() {
-        return 0;
-    }
-
     public boolean isValid() {
         return mValid;
     }
diff --git a/src/com/android/contacts/list/UiIntentActions.java b/src/com/android/contacts/list/UiIntentActions.java
index c892895..5539635 100644
--- a/src/com/android/contacts/list/UiIntentActions.java
+++ b/src/com/android/contacts/list/UiIntentActions.java
@@ -85,17 +85,6 @@
             "com.android.contacts.extra.TITLE_EXTRA";
 
     /**
-     * Activity Action: Display a filtered list of contacts
-     * <p>
-     * Input: Extra field {@link #FILTER_TEXT_EXTRA_KEY} is the text to use for
-     * filtering
-     * <p>
-     * Output: Nothing.
-     */
-    public static final String FILTER_CONTACTS_ACTION =
-            "com.android.contacts.action.FILTER_CONTACTS";
-
-    /**
      * Used as an int extra field in {@link #FILTER_CONTACTS_ACTION}
      * intents to supply the text on which to filter.
      */
