summaryrefslogtreecommitdiff
path: root/core/java/android/app/SearchManager.java
diff options
context:
space:
mode:
authorBjorn Bringert <bringert@android.com>2009-09-28 20:11:52 +0100
committerBjorn Bringert <bringert@android.com>2009-09-28 20:32:13 +0100
commit3fc7c67de192a5baee2b4510fdb464b0fec72dca (patch)
tree9692e0caebb4f1c1ddeb28fa45744fafc3eae787 /core/java/android/app/SearchManager.java
parent81384bf927c47a4efa653b14273084a13e67e3ac (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.java39
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);