summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/SearchPanelView.java40
1 files changed, 36 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
index 76613e0..daac9ed 100644
--- a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
@@ -81,13 +81,45 @@ public class SearchPanelView extends FrameLayout implements
// Close Recent Apps if needed
mBar.animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_SEARCH_PANEL);
-
+ boolean isKeyguardShowing = false;
try {
- mWm.showAssistant();
+ isKeyguardShowing = mWm.isKeyguardLocked();
} catch (RemoteException e) {
- // too bad, so sad...
+
+ }
+
+ if (isKeyguardShowing) {
+ // Have keyguard show the bouncer and launch the activity if the user succeeds.
+ try {
+ mWm.showAssistant();
+ } catch (RemoteException e) {
+ // too bad, so sad...
+ }
+ onAnimationStarted();
+ } else {
+ // Otherwise, keyguard isn't showing so launch it from here.
+ Intent intent = ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE))
+ .getAssistIntent(mContext, UserHandle.USER_CURRENT);
+ if (intent == null) return;
+
+ try {
+ ActivityManagerNative.getDefault().dismissKeyguardOnNextActivity();
+ } catch (RemoteException e) {
+ // too bad, so sad...
+ }
+
+ try {
+ ActivityOptions opts = ActivityOptions.makeCustomAnimation(mContext,
+ R.anim.search_launch_enter, R.anim.search_launch_exit,
+ getHandler(), this);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivityAsUser(intent, opts.toBundle(),
+ new UserHandle(UserHandle.USER_CURRENT));
+ } catch (ActivityNotFoundException e) {
+ Slog.w(TAG, "Activity not found for " + intent.getAction());
+ onAnimationStarted();
+ }
}
- onAnimationStarted();
}
class GlowPadTriggerListener implements GlowPadView.OnTriggerListener {