summaryrefslogtreecommitdiffstats
path: root/core/java/android/server
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/server')
-rw-r--r--core/java/android/server/search/SearchManagerService.java9
-rw-r--r--core/java/android/server/search/SearchableInfo.java15
-rw-r--r--core/java/android/server/search/Searchables.java16
3 files changed, 39 insertions, 1 deletions
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);
+ }
}