アプリのSearchManagerで2つの異なる検索アクティビティを実装しています。1つはアプリ全体のデフォルトの検索可能であり、もう1つは1つのアクティビティにのみ使用されます。これらの2つの検索は異なるデータのルックアップを実行し、2つの異なる検索間で検索履歴を共有することは意味がありません。2つの異なる検索可能ファイルはアプリ内で機能的に正常に機能しています。私の問題は、最近の検索履歴にあります。
問題は、アプリ内で2つの異なるSearchRecentSuggestionsProviderクラスが定義されているが、1つで行われた検索は、両方の検索の最近の検索候補履歴に表示されることです。開発ガイドのSearchManagerトピックを読みましたが、複数の提案プロバイダーに関する情報が表示されません。
ノード内のAndroidManifest.xmlの2つのプロバイダーは次のとおりです。
<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の列がないので、2つの検索の履歴を分離する方法がないのではないでしょうか。
このすべての最終結果は、2つの異なる検索のいずれかで検索を実行すると、最近の検索履歴の候補にsearchoneとsearchtwoの両方が表示されることです。できればそれぞれに独自の歴史を持ってもらいたいです。うまくいけば、私は愚かな何かを見逃しただけではありませんでした!これをお読みいただきありがとうございます。