Don't start search from a dialog if there is no activity associated with

the search manager at that point.

Still works:
- hitting search when a managed dialog of an app is showing will dismiss
  the dialog and start in-app search (if it supports it), falling back
  on global search
- hitting search when a dialog of an app (not managed by the activity) will
  dismiss the dialog and start global search
- hitting search when a system dialog is showing will just dismiss the dialog.
This commit is contained in:
Karl Rosaen
2009-07-21 16:21:32 -07:00
parent 841ed8596a
commit ec0a12cf19
2 changed files with 9 additions and 0 deletions

View File

@@ -788,6 +788,11 @@ public class Dialog implements DialogInterface, Window.Callback,
final SearchManager searchManager = (SearchManager) mContext
.getSystemService(Context.SEARCH_SERVICE);
// can't start search without an associated activity (e.g a system dialog)
if (!searchManager.hasIdent()) {
return false;
}
// associate search with owner activity if possible (otherwise it will default to
// global search).
final ComponentName appName = mOwnerActivity == null ? null

View File

@@ -1536,6 +1536,10 @@ public class SearchManager
mService = ISearchManager.Stub.asInterface(
ServiceManager.getService(Context.SEARCH_SERVICE));
}
/*package*/ boolean hasIdent() {
return mIdent != 0;
}
/*package*/ void setIdent(int ident) {
if (mIdent != 0) {