У меня есть поставщик настраиваемых поисковых предложений. На самом деле это не предложение само по себе, а ярлыки поиска. Вот пользовательский провайдер, который я написал:
public class QuickSearchProvider extends SearchRecentSuggestionsProvider {
public final static String AUTHORITY = "com.example.testapp.providers.QuickSearchProvider";
public final static int MODE = DATABASE_MODE_QUERIES | DATABASE_MODE_2LINES;
public QuickSearchProvider() {
setupSuggestions(AUTHORITY, MODE);
}
public Cursor query(Uri uri, String[] projection, String sel,
String[] selArgs, String sortOrder) {
MatrixCursor cursor = new MatrixCursor(new String[] {
BaseColumns._ID,
SearchManager.SUGGEST_COLUMN_TEXT_1,
SearchManager.SUGGEST_COLUMN_TEXT_2,
SearchManager.SUGGEST_COLUMN_ICON_1,
SearchManager.SUGGEST_COLUMN_INTENT_ACTION});
cursor.addRow(new Object[] { 0, "Plants", "Search Plants", android.R.drawable.ic_menu_search, Search.SEARCH_PLANTS_ACTION});
cursor.addRow(new Object[] { 1, "Birds", "Search Birds", android.R.drawable.ic_menu_search, Search.SEARCH_BIRDS_ACTION });
return new MergeCursor(new Cursor[] { cursor });
}
}
В моей активности, которая содержит поле поиска, я написал обработчик внутри метода onNewIntent
. Вот пример:
protected void onNewIntent(Intent intent) {
if (Search.SEARCH_PLANTS_ACTION.equals(intent.getAction())) {
...
} else if (Search.SEARCH_BIRDS_ACTION.equals(intent.getAction())) {
...
}
}
Как видите, я могу легко проверить, какой ярлык поиска был выбран, но я не могу понять, как получить исходную строку запроса. Любая помощь?
(Дополнительное примечание: если вы обнаружите, что моя реализация поставщика подсказок пользовательского поиска неверна или может быть улучшена, сообщите мне об этом.)
Спасибо.