У меня в приложении реализованы две разные операции поиска с SearchManager .Один - это поиск по умолчанию для всего приложения, а другой - только для одного действия.Эти два поиска выполняют поиск разных данных, и нет смысла делиться историей поиска между двумя разными поисками.Две разные функции поиска работают нормально в приложении, моя проблема связана с недавними историями поиска.
Проблема в том, что в приложении определены два разных SearchRecentSuggestionsProvider класса, но любойпоиск, выполненный в одном, отображается в истории последних поисковых запросов обоих поисков.Я прочитал тему SearchManager в Руководстве по разработке, но не вижу никакой информации о нескольких поставщиках предложений.
Вот два поставщика в AndroidManifest.xml в узле:
<provider android:name=".SearchOneRecentSuggestionsProvider"
android:authorities="com.company.SearchOneRecentSuggestionsProvider"></provider>
<provider android:name=".SearchTwoRecentSuggestionsProvider"
android:authorities="com.company.SearchTwoRecentSuggestionsProvider"></provider>
Вот класс, определенный в SearchOneRecentSuggestionsProvider.java:
package com.company;
import android.content.SearchRecentSuggestionsProvider;
public class SearchOneRecentSuggestionsProvider extends SearchRecentSuggestionsProvider {
public final static String AUTHORITY = "com.company.SearchOneRecentSuggestionsProvider";
public final static int MODE = DATABASE_MODE_QUERIES;
public SearchOneRecentSuggestionsProvider() {
setupSuggestions(AUTHORITY, MODE);
}
}
(класс SearchTwoRecentSuggestionsProvider выглядит точно так же, за исключением замены One на Two и в его собственном файле SearchTwoRecentSuggestionsProvider.java.)
Вот что находится в базе данных предложений поиска (в /data/data/com.company/databases/suggestions.db):
# sqlite3 suggestions.db
SQLite version 3.5.9
Enter ".help" for instructions
sqlite> .tables
android_metadata suggestions
sqlite> .schema suggestions
CREATE TABLE suggestions (_id INTEGER PRIMARY KEY,display1 TEXT UNIQUE ON CONFLICT REPLACE,query TEXT,date LONG);
sqlite> select * from suggestions;
1|searchone|searchone|1296177852444
2|searchtwo|searchtwo|1296177878744
Нет столбца для SearchRecentSuggestionsProvider, поэтому, возможно, нет путиразделить историю двух поисков?
Конечным результатом всего этого является то, что когда вы выполняете поиск в одном из двух разных поисков, вы видите и searchone, и searchtwo в недавних предложениях истории поиска.Я бы хотел, чтобы у каждого была своя история, если это возможно.Надеюсь, я не пропустил что-то глупое!Спасибо, что нашли время, чтобы прочитать это.