diff options
author | Narayan Kamath <narayan@google.com> | 2011-06-28 12:07:18 +0100 |
---|---|---|
committer | Narayan Kamath <narayan@google.com> | 2011-06-28 15:30:49 +0100 |
commit | ee69ff4eaee9342843d5f25338288865dda2d36a (patch) | |
tree | f7a35649b1a716ed03a48014b6b12a6f00c06641 /core/java/android/server/search/SearchManagerService.java | |
parent | 7ae28d321684ea71fa41b2dc4caca14c6d964984 (diff) | |
download | frameworks_base-ee69ff4eaee9342843d5f25338288865dda2d36a.zip frameworks_base-ee69ff4eaee9342843d5f25338288865dda2d36a.tar.gz frameworks_base-ee69ff4eaee9342843d5f25338288865dda2d36a.tar.bz2 |
Make the system global search provider a user setting.
Also, modify Searchables / SearchManagerService to
honour the setting when it's set.
Change-Id: Ia63351fff4fe28ee79ac8b9e30fdb8edc43f5534
Diffstat (limited to 'core/java/android/server/search/SearchManagerService.java')
-rw-r--r-- | core/java/android/server/search/SearchManagerService.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/core/java/android/server/search/SearchManagerService.java b/core/java/android/server/search/SearchManagerService.java index 3826a01..79ade26 100644 --- a/core/java/android/server/search/SearchManagerService.java +++ b/core/java/android/server/search/SearchManagerService.java @@ -23,10 +23,14 @@ import android.app.SearchManager; import android.app.SearchableInfo; import android.content.BroadcastReceiver; import android.content.ComponentName; +import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.ResolveInfo; +import android.database.ContentObserver; import android.os.Process; +import android.provider.Settings; import android.util.Log; import java.util.List; @@ -46,6 +50,8 @@ public class SearchManagerService extends ISearchManager.Stub { // This field is initialized lazily in getSearchables(), and then never modified. private Searchables mSearchables; + private ContentObserver mGlobalSearchObserver; + /** * Initializes the Search Manager service in the provided system context. * Only one instance of this object should be created! @@ -56,6 +62,8 @@ public class SearchManagerService extends ISearchManager.Stub { mContext = context; mContext.registerReceiver(new BootCompletedReceiver(), new IntentFilter(Intent.ACTION_BOOT_COMPLETED)); + mGlobalSearchObserver = new GlobalSearchProviderObserver( + mContext.getContentResolver()); } private synchronized Searchables getSearchables() { @@ -100,6 +108,28 @@ public class SearchManagerService extends ISearchManager.Stub { } } + class GlobalSearchProviderObserver extends ContentObserver { + private final ContentResolver mResolver; + + public GlobalSearchProviderObserver(ContentResolver resolver) { + super(null); + mResolver = resolver; + mResolver.registerContentObserver( + Settings.Secure.getUriFor(Settings.Secure.SEARCH_GLOBAL_SEARCH_ACTIVITY), + false /* notifyDescendants */, + this); + } + + @Override + public void onChange(boolean selfChange) { + getSearchables().buildSearchableList(); + Intent intent = new Intent(SearchManager.INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED); + intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING); + mContext.sendBroadcast(intent); + } + + } + // // Searchable activities API // @@ -126,6 +156,10 @@ public class SearchManagerService extends ISearchManager.Stub { return getSearchables().getSearchablesInGlobalSearchList(); } + public List<ResolveInfo> getGlobalSearchActivities() { + return getSearchables().getGlobalSearchActivities(); + } + /** * Gets the name of the global search activity. */ |