2017年2月3日 星期五

【Android】Android Search Framework - SearchManagerService

./frameworks/base/core/java/android/server/search/SearchManagerService.java


 呼叫buildSearchableList()
這個function來自Searchables.java,它會
(1) 建立一個可被全面搜索的Activity清單,用來搜索ACTION_SEARCH和ACTION_WEB_SEARCH的intent
(2) 並且清除現有的所有Activity的雜湊表(hash)→ 當使用者按下 ‘search’ 會重新建立
(3) 這個方法應該只會在開機 or 當我們知道清單被改變的時候才會執行
(4) 如果AndroidManifest.xml裡面。Activity若有宣告
那同時也需要有這個
因為,
function中的寫法searchList = ...的第二個參數 GET_META_DATA,會要求傳回那個Activity相對應的meta-data,
所以如果不設定meta-data就不會被加入清單



 檢查Activity是不是有search功能的,如果是就拿它的meta-data資料;如果不是Searchable的Activity或是沒有宣告meta-data,就會傳回 null






 設有GLOBAL_SEARCH權限可供global search 的activity清單,在有變更時做更新



 從PackageManager清單中搜尋有提供web search的所有activity

沒有留言:

張貼留言