SearchManagerによるグローバル検索サービス

1402 ワード

グローバル検索機能に適したクラス:SearchManagerは、システム内のグローバル検索機能をサポートするすべてのアプリケーションをクエリーするために使用されたことがありません.対応するサービスはSearchManagerServiceであり,Activity ManagerServiceのような役割を果たし,システム起動時に起動した.
一般的な使い方は、まずサービスを取得することです.
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分析