Don't use hidden Parcel#{read,write}CharSequence
Make ContactsRequest no longer parcelable in order
to avoid calling hidden APIs.
ContactsRequest only needs to be parcelable for the
sake of ContactsSearchManager. ContactsSearchManager
only exists for the sake of supporting the
FILTER_CONTACTS intent filter. The FILTER_CONTACTS intent
was only used by the system's search button which the contacts
app hasn't supported since gingerbread. Moreover, the FILTER_CONTACTS
API is deprecated.
Therefore, I remove all the things mentioned above.
Bug: 18777272
Change-Id: I8da1ff02bcdebce08acc5eac47d479b8d9617483
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.
*/