diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/app/ISearchManager.aidl | 1 | ||||
| -rw-r--r-- | core/java/android/app/SearchManager.java | 18 | ||||
| -rw-r--r-- | core/java/android/server/search/SearchManagerService.java | 9 | ||||
| -rw-r--r-- | core/java/android/server/search/SearchableInfo.java | 15 | ||||
| -rw-r--r-- | core/java/android/server/search/Searchables.java | 16 |
5 files changed, 58 insertions, 1 deletions
diff --git a/core/java/android/app/ISearchManager.aidl b/core/java/android/app/ISearchManager.aidl index 6c3617a..39eb4f1 100644 --- a/core/java/android/app/ISearchManager.aidl +++ b/core/java/android/app/ISearchManager.aidl @@ -22,4 +22,5 @@ import android.server.search.SearchableInfo; /** @hide */ interface ISearchManager { SearchableInfo getSearchableInfo(in ComponentName launchActivity, boolean globalSearch); + List<SearchableInfo> getSearchablesInGlobalSearch(); } diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java index 76d780a..39f3bcd 100644 --- a/core/java/android/app/SearchManager.java +++ b/core/java/android/app/SearchManager.java @@ -30,6 +30,8 @@ import android.os.ServiceManager; import android.server.search.SearchableInfo; import android.view.KeyEvent; +import java.util.List; + /** * This class provides access to the system search services. * @@ -1655,4 +1657,20 @@ public class SearchManager return context.getContentResolver().query(uri, null, selection, selArgs, null); } + /** + * Returns a list of the searchable activities that can be included in global search. + * + * @return a list containing searchable information for all searchable activities + * that have the <code>exported</code> attribute set in their searchable + * meta-data. + * + * @hide because SearchableInfo is not part of the API. + */ + public static List<SearchableInfo> getSearchablesInGlobalSearch() { + try { + return sService.getSearchablesInGlobalSearch(); + } catch (RemoteException e) { + return null; + } + } } diff --git a/core/java/android/server/search/SearchManagerService.java b/core/java/android/server/search/SearchManagerService.java index f180823..03623d6 100644 --- a/core/java/android/server/search/SearchManagerService.java +++ b/core/java/android/server/search/SearchManagerService.java @@ -24,6 +24,8 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.Handler; +import java.util.List; + /** * This is a simplified version of the Search Manager service. It no longer handles * presentation (UI). Its function is to maintain the map & list of "searchable" @@ -143,5 +145,12 @@ public class SearchManagerService extends ISearchManager.Stub return si; } + + /** + * Returns a list of the searchable activities that can be included in global search. + */ + public List<SearchableInfo> getSearchablesInGlobalSearch() { + return mSearchables.getSearchablesInGlobalSearchList(); + } } diff --git a/core/java/android/server/search/SearchableInfo.java b/core/java/android/server/search/SearchableInfo.java index a4a7827..aad7ae2 100644 --- a/core/java/android/server/search/SearchableInfo.java +++ b/core/java/android/server/search/SearchableInfo.java @@ -66,6 +66,7 @@ public final class SearchableInfo implements Parcelable { private int mSearchButtonText = 0; private int mSearchInputType = 0; private int mSearchImeOptions = 0; + private boolean mIncludeInGlobalSearch = false; private String mSuggestAuthority = null; private String mSuggestPath = null; private String mSuggestSelection = null; @@ -236,6 +237,8 @@ public final class SearchableInfo implements Parcelable { InputType.TYPE_TEXT_VARIATION_NORMAL); mSearchImeOptions = a.getInt(com.android.internal.R.styleable.Searchable_imeOptions, EditorInfo.IME_ACTION_SEARCH); + mIncludeInGlobalSearch = a.getBoolean( + com.android.internal.R.styleable.Searchable_includeInGlobalSearch, false); setSearchModeFlags(); if (DBG_INHIBIT_SUGGESTIONS == 0) { @@ -576,6 +579,16 @@ public final class SearchableInfo implements Parcelable { } /** + * Checks whether the searchable is exported. + * + * @return The value of the <code>exported</code> attribute, + * or <code>false</code> if the attribute is not set. + */ + public boolean shouldIncludeInGlobalSearch() { + return mIncludeInGlobalSearch; + } + + /** * Support for parcelable and aidl operations. */ public static final Parcelable.Creator<SearchableInfo> CREATOR @@ -606,6 +619,7 @@ public final class SearchableInfo implements Parcelable { mSearchButtonText = in.readInt(); mSearchInputType = in.readInt(); mSearchImeOptions = in.readInt(); + mIncludeInGlobalSearch = in.readInt() != 0; setSearchModeFlags(); mSuggestAuthority = in.readString(); @@ -644,6 +658,7 @@ public final class SearchableInfo implements Parcelable { dest.writeInt(mSearchButtonText); dest.writeInt(mSearchInputType); dest.writeInt(mSearchImeOptions); + dest.writeInt(mIncludeInGlobalSearch ? 1 : 0); dest.writeString(mSuggestAuthority); dest.writeString(mSuggestPath); diff --git a/core/java/android/server/search/Searchables.java b/core/java/android/server/search/Searchables.java index e338bd2..40d7449 100644 --- a/core/java/android/server/search/Searchables.java +++ b/core/java/android/server/search/Searchables.java @@ -44,6 +44,7 @@ public class Searchables { private HashMap<ComponentName, SearchableInfo> mSearchablesMap = null; private ArrayList<SearchableInfo> mSearchablesList = null; + private ArrayList<SearchableInfo> mSearchablesInGlobalSearchList = null; private SearchableInfo mDefaultSearchable = null; /** @@ -189,6 +190,8 @@ public class Searchables { = new HashMap<ComponentName, SearchableInfo>(); ArrayList<SearchableInfo> newSearchablesList = new ArrayList<SearchableInfo>(); + ArrayList<SearchableInfo> newSearchablesInGlobalSearchList + = new ArrayList<SearchableInfo>(); final PackageManager pm = mContext.getPackageManager(); @@ -208,6 +211,9 @@ public class Searchables { if (searchable != null) { newSearchablesList.add(searchable); newSearchablesMap.put(searchable.mSearchActivity, searchable); + if (searchable.shouldIncludeInGlobalSearch()) { + newSearchablesInGlobalSearchList.add(searchable); + } } } } @@ -219,8 +225,9 @@ public class Searchables { // Store a consistent set of new values synchronized (this) { - mSearchablesList = newSearchablesList; mSearchablesMap = newSearchablesMap; + mSearchablesList = newSearchablesList; + mSearchablesInGlobalSearchList = newSearchablesInGlobalSearchList; mDefaultSearchable = newDefaultSearchable; } } @@ -232,4 +239,11 @@ public class Searchables { ArrayList<SearchableInfo> result = new ArrayList<SearchableInfo>(mSearchablesList); return result; } + + /** + * Returns a list of the searchable activities that can be included in global search. + */ + public synchronized ArrayList<SearchableInfo> getSearchablesInGlobalSearchList() { + return new ArrayList<SearchableInfo>(mSearchablesInGlobalSearchList); + } } |
