SearchManagerによるグローバル検索サービス
1402 ワード
グローバル検索機能に適したクラス:SearchManagerは、システム内のグローバル検索機能をサポートするすべてのアプリケーションをクエリーするために使用されたことがありません.対応するサービスはSearchManagerServiceであり,Activity ManagerServiceのような役割を果たし,システム起動時に起動した.
一般的な使い方は、まずサービスを取得することです.
次に、検索をサポートするすべてのアプリケーション情報を取得します.
その後、あるSearchableInfoに基づいてuriに組織され、最終的にcontentResolverでクエリーされます.
クエリ可能なアプリケーションは本質的にcontentProviderによってプロセス間データ共有を実現する.アプリケーションをSearchManagerで取得するには、SearchManagerServiceに登録する必要があります.すなわち、システムによって識別され、SMSに登録されるには、xmlにいくつかの属性を宣言する必要がある.具体的には、Introducing Quick Search Box for Androidを参照するには、どのような声明が必要ですか.
参考記事:SearchManager分析
一般的な使い方は、まずサービスを取得することです.
mAndroidSearchManager = (SearchManager) mContext.getApplicationContext().getSystemService(Context.SEARCH_SERVICE);
次に、検索をサポートするすべてのアプリケーション情報を取得します.
List infoList = mAndroidSearchManager.getSearchablesInGlobalSearch();
for (SearchableInfo info : infoList) {
String suggestPackage = info.getSuggestPackage();//
String suggestAuthority = info.getSuggestAuthority();// contentProvider authority
String suggestIntentAction = info.getSuggestIntentAction();// intentAction
String suggestIntentData = info.getSuggestIntentData();//
String suggestPath = info.getSuggestPath();//
String suggestSelection = info.getSuggestSelection();// , Sql where
ComponentName searchActivity = info.getSearchActivity();// activity}
その後、あるSearchableInfoに基づいてuriに組織され、最終的にcontentResolverでクエリーされます.
クエリ可能なアプリケーションは本質的にcontentProviderによってプロセス間データ共有を実現する.アプリケーションをSearchManagerで取得するには、SearchManagerServiceに登録する必要があります.すなわち、システムによって識別され、SMSに登録されるには、xmlにいくつかの属性を宣言する必要がある.具体的には、Introducing Quick Search Box for Androidを参照するには、どのような声明が必要ですか.
参考記事:SearchManager分析