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.java18
-rw-r--r--core/java/android/server/search/Searchables.java30
2 files changed, 11 insertions, 37 deletions
diff --git a/core/java/android/server/search/SearchManagerService.java b/core/java/android/server/search/SearchManagerService.java
index eaace6b..f180823 100644
--- a/core/java/android/server/search/SearchManagerService.java
+++ b/core/java/android/server/search/SearchManagerService.java
@@ -22,7 +22,6 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Handler;
/**
@@ -116,23 +115,6 @@ public class SearchManagerService extends ISearchManager.Stub
private void updateSearchables() {
mSearchables.buildSearchableList();
mSearchablesDirty = false;
-
- // TODO SearchableInfo should be the source of truth about whether a searchable exists.
- // As it stands, if the package exists but is misconfigured in some way, then this
- // would fail, and needs to be fixed.
- ComponentName defaultSearch = new ComponentName(
- "com.android.globalsearch",
- "com.android.globalsearch.GlobalSearch");
-
- try {
- mContext.getPackageManager().getActivityInfo(defaultSearch, 0);
- } catch (NameNotFoundException e) {
- defaultSearch = new ComponentName(
- "com.android.googlesearch",
- "com.android.googlesearch.GoogleSearch");
- }
-
- mSearchables.setDefaultSearchable(defaultSearch);
}
/**
diff --git a/core/java/android/server/search/Searchables.java b/core/java/android/server/search/Searchables.java
index ba75d21..e338bd2 100644
--- a/core/java/android/server/search/Searchables.java
+++ b/core/java/android/server/search/Searchables.java
@@ -16,6 +16,7 @@
package android.server.search;
+import android.app.SearchManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -148,22 +149,6 @@ public class Searchables {
}
/**
- * Set the default searchable activity (when none is specified).
- */
- public synchronized void setDefaultSearchable(ComponentName activity) {
- SearchableInfo si = null;
- if (activity != null) {
- si = getSearchableInfo(activity);
- if (si != null) {
- // move to front of list
- mSearchablesList.remove(si);
- mSearchablesList.add(0, si);
- }
- }
- mDefaultSearchable = si;
- }
-
- /**
* Provides the system-default search activity, which you can use
* whenever getSearchableInfo() returns null;
*
@@ -199,14 +184,15 @@ public class Searchables {
*/
public void buildSearchableList() {
- // create empty hash & list
+ // These will become the new values at the end of the method
HashMap<ComponentName, SearchableInfo> newSearchablesMap
= new HashMap<ComponentName, SearchableInfo>();
ArrayList<SearchableInfo> newSearchablesList
= new ArrayList<SearchableInfo>();
- // use intent resolver to generate list of ACTION_SEARCH receivers
final PackageManager pm = mContext.getPackageManager();
+
+ // use intent resolver to generate list of ACTION_SEARCH receivers
List<ResolveInfo> infoList;
final Intent intent = new Intent(Intent.ACTION_SEARCH);
infoList = pm.queryIntentActivities(intent, PackageManager.GET_META_DATA);
@@ -226,10 +212,16 @@ public class Searchables {
}
}
- // record the final values as a coherent pair
+ // Find the global search provider
+ Intent globalSearchIntent = new Intent(SearchManager.INTENT_ACTION_GLOBAL_SEARCH);
+ ComponentName globalSearchActivity = globalSearchIntent.resolveActivity(pm);
+ SearchableInfo newDefaultSearchable = newSearchablesMap.get(globalSearchActivity);
+
+ // Store a consistent set of new values
synchronized (this) {
mSearchablesList = newSearchablesList;
mSearchablesMap = newSearchablesMap;
+ mDefaultSearchable = newDefaultSearchable;
}
}