diff options
author | Dianne Hackborn <hackbod@google.com> | 2009-07-28 17:49:55 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2009-07-28 17:55:13 -0700 |
commit | a6ddc8af22af6bce879c5bf906aad16c0b3d6b01 (patch) | |
tree | 8a8d91e64c127d07657cb3d32c2ab130673120e6 /services/java/com/android/server/am | |
parent | ac38dfc5435b57281c97165e4de5b5a12af98a20 (diff) | |
download | frameworks_base-a6ddc8af22af6bce879c5bf906aad16c0b3d6b01.zip frameworks_base-a6ddc8af22af6bce879c5bf906aad16c0b3d6b01.tar.gz frameworks_base-a6ddc8af22af6bce879c5bf906aad16c0b3d6b01.tar.bz2 |
Fix issue #1999179: search -> click result -> press home = search dialog is shown then hidden
Re-arrange various things to ensure that the search dialog is told about system windows being
closed before it is told about the navigation back to home.
Diffstat (limited to 'services/java/com/android/server/am')
-rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 5ea59ca..51ee41a 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -4760,6 +4760,34 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } } + public void closeSystemDialogs(String reason) { + Intent intent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); + if (reason != null) { + intent.putExtra("reason", reason); + } + + final int uid = Binder.getCallingUid(); + final long origId = Binder.clearCallingIdentity(); + synchronized (this) { + int i = mWatchers.beginBroadcast(); + while (i > 0) { + i--; + IActivityWatcher w = mWatchers.getBroadcastItem(i); + if (w != null) { + try { + w.closingSystemDialogs(reason); + } catch (RemoteException e) { + } + } + } + mWatchers.finishBroadcast(); + + broadcastIntentLocked(null, null, intent, null, + null, 0, null, null, null, false, false, -1, uid); + } + Binder.restoreCallingIdentity(origId); + } + private void restartPackageLocked(final String packageName, int uid) { uninstallPackageLocked(packageName, uid, false); Intent intent = new Intent(Intent.ACTION_PACKAGE_RESTARTED, |