diff options
| author | Bjorn Bringert <bringert@android.com> | 2009-09-28 20:11:52 +0100 |
|---|---|---|
| committer | Bjorn Bringert <bringert@android.com> | 2009-09-28 20:32:13 +0100 |
| commit | 3fc7c67de192a5baee2b4510fdb464b0fec72dca (patch) | |
| tree | 9692e0caebb4f1c1ddeb28fa45744fafc3eae787 /core/java/android/app/SearchManager.java | |
| parent | 81384bf927c47a4efa653b14273084a13e67e3ac (diff) | |
Pass limit=50 to all suggestion sources.
Should mitigate http://b/issue?id=2149158
"Bad suggestions behavior within contacts app
search for 10k contact db"
Change-Id: Ida50e9157c3ce46fc7892ef09a67da9f4008e665
Diffstat (limited to 'core/java/android/app/SearchManager.java')
| -rw-r--r-- | core/java/android/app/SearchManager.java | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java index f0876f4cdd88..9851750a349b 100644 --- a/core/java/android/app/SearchManager.java +++ b/core/java/android/app/SearchManager.java @@ -27,9 +27,9 @@ import android.os.Handler; import android.os.RemoteException; import android.os.ServiceManager; import android.server.search.SearchableInfo; +import android.text.TextUtils; import android.util.Log; import android.view.KeyEvent; -import android.text.TextUtils; import java.util.List; @@ -1591,6 +1591,13 @@ public class SearchManager public final static String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1"; /** + * Query parameter added to suggestion queries to limit the number of suggestions returned. + * + * @hide Pending API council approval + */ + public final static String SUGGEST_PARAMETER_LIMIT = "limit"; + + /** * If a suggestion has this value in {@link #SUGGEST_COLUMN_INTENT_ACTION}, * the search dialog will switch to a different suggestion source when the * suggestion is clicked. @@ -1980,6 +1987,21 @@ public class SearchManager * @hide because SearchableInfo is not part of the API. */ public Cursor getSuggestions(SearchableInfo searchable, String query) { + return getSuggestions(searchable, query, -1); + } + + /** + * Gets a cursor with search suggestions. + * + * @param searchable Information about how to get the suggestions. + * @param query The search text entered (so far). + * @param limit The query limit to pass to the suggestion provider. This is advisory, + * the returned cursor may contain more rows. Pass {@code -1} for no limit. + * @return a cursor with suggestions, or <code>null</null> the suggestion query failed. + * + * @hide because SearchableInfo is not part of the API. + */ + public Cursor getSuggestions(SearchableInfo searchable, String query, int limit) { if (searchable == null) { return null; } @@ -1991,7 +2013,9 @@ public class SearchManager Uri.Builder uriBuilder = new Uri.Builder() .scheme(ContentResolver.SCHEME_CONTENT) - .authority(authority); + .authority(authority) + .query("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() + .fragment(""); // TODO: Remove, workaround for a bug in Uri.writeToParcel() // if content path provided, insert it now final String contentPath = searchable.getSuggestPath(); @@ -1999,7 +2023,7 @@ public class SearchManager uriBuilder.appendEncodedPath(contentPath); } - // append standard suggestion query path + // append standard suggestion query path uriBuilder.appendPath(SearchManager.SUGGEST_URI_PATH_QUERY); // get the query selection, may be null @@ -2012,10 +2036,11 @@ public class SearchManager uriBuilder.appendPath(query); } - Uri uri = uriBuilder - .query("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() - .fragment("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() - .build(); + if (limit > 0) { + uriBuilder.appendQueryParameter(SUGGEST_PARAMETER_LIMIT, String.valueOf(limit)); + } + + Uri uri = uriBuilder.build(); // finally, make the query return mContext.getContentResolver().query(uri, null, selection, selArgs, null); |
