diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2009-08-21 12:59:04 -0700 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2009-08-21 12:59:04 -0700 |
commit | dd03c6135f91df6d5d9e71de1487520dc3345742 (patch) | |
tree | c4948e1ca876b218b8c50abd6171ad2be10396cd /core/java/android/server | |
parent | bfcfb7eec61bd196cfd91f7b2c5715751308c048 (diff) | |
parent | 081a136d259c02b2ab8ba773c38e404f7b3c3de4 (diff) | |
download | frameworks_base-dd03c6135f91df6d5d9e71de1487520dc3345742.zip frameworks_base-dd03c6135f91df6d5d9e71de1487520dc3345742.tar.gz frameworks_base-dd03c6135f91df6d5d9e71de1487520dc3345742.tar.bz2 |
resolved conflicts for merge of 081a136d to eclair
Diffstat (limited to 'core/java/android/server')
-rw-r--r-- | core/java/android/server/search/Searchables.java | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/core/java/android/server/search/Searchables.java b/core/java/android/server/search/Searchables.java index c615957..a2add73 100644 --- a/core/java/android/server/search/Searchables.java +++ b/core/java/android/server/search/Searchables.java @@ -26,6 +26,7 @@ import android.content.IntentFilter; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.content.pm.ApplicationInfo; import android.os.Bundle; import android.util.Log; @@ -230,14 +231,16 @@ public class Searchables { : webSearchInfoList.get(ii - search_count); ActivityInfo ai = info.activityInfo; // Check first to avoid duplicate entries. - if (newSearchablesMap.get(new ComponentName(ai.packageName, ai.name)) == null) { - SearchableInfo searchable = SearchableInfo.getActivityMetaData(mContext, ai); - if (searchable != null) { - newSearchablesList.add(searchable); - newSearchablesMap.put(searchable.getSearchActivity(), searchable); - if (searchable.shouldIncludeInGlobalSearch()) { - newSearchablesInGlobalSearchList.add(searchable); - } + if (newSearchablesMap.containsKey(new ComponentName(ai.packageName, ai.name))) { + continue; + } + SearchableInfo searchable = SearchableInfo.getActivityMetaData(mContext, ai); + if (searchable != null) { + newSearchablesList.add(searchable); + newSearchablesMap.put(searchable.getSearchActivity(), searchable); + if (searchable.shouldIncludeInGlobalSearch() + && isWhitelistedForGlobalSearch(pm, searchable.getSearchActivity())) { + newSearchablesInGlobalSearchList.add(searchable); } } } @@ -289,6 +292,25 @@ public class Searchables { } /** + * Determines whether an activity may be included in quick search box. For now this is + * restricted to system installed apps. + * + * TODO: remove when we are ready to enable global search for third party applications. + * + * @param pm The package manager. + * @param searchActivity The component of the search activity. + * @return True if the search activity may include its search suggestions in quick search box. + */ + private boolean isWhitelistedForGlobalSearch(PackageManager pm, ComponentName searchActivity) { + try { + ActivityInfo ai = pm.getActivityInfo(searchActivity, 0); + return ((ai.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0); + } catch (PackageManager.NameNotFoundException e) { + return false; + } + } + + /** * Checks if the given activity component is present in the system and if so makes it the * preferred activity for handling ACTION_WEB_SEARCH. * @param component Name of the component to check and set as preferred. |