summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java23
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java19
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java3
7 files changed, 51 insertions, 25 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index df005a8..35ed3e5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -276,7 +276,7 @@ public abstract class BaseStatusBar extends SystemUI implements
// Wait for activity start.
return handled;
}
- });
+ }, false /* afterKeyguardGone */);
return true;
} else {
return super.onClickHandler(view, pendingIntent, fillInIntent);
@@ -526,8 +526,9 @@ public abstract class BaseStatusBar extends SystemUI implements
/**
* Takes the necessary steps to prepare the status bar for starting an activity, then starts it.
* @param action A dismiss action that is called if it's safe to start the activity.
+ * @param afterKeyguardGone Whether the action should be executed after the Keyguard is gone.
*/
- protected void dismissKeyguardThenExecute(OnDismissAction action) {
+ protected void dismissKeyguardThenExecute(OnDismissAction action, boolean afterKeyguardGone) {
action.onDismiss();
}
@@ -646,7 +647,7 @@ public abstract class BaseStatusBar extends SystemUI implements
animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE, true /* force */);
return true;
}
- });
+ }, false /* afterKeyguardGone */);
}
protected SwipeHelper.LongPressListener getNotificationLongClicker() {
@@ -1339,7 +1340,7 @@ public abstract class BaseStatusBar extends SystemUI implements
return mIntent != null && mIntent.isActivity();
}
- });
+ }, false /* afterKeyguardGone */);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java
index 23810f9..9dfbb27 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java
@@ -24,5 +24,5 @@ import android.content.Intent;
* Keyguard.
*/
public interface ActivityStarter {
- public void startActivity(Intent intent, boolean dismissShade);
+ public void startActivity(Intent intent, boolean dismissShade, boolean afterKeyguardGone);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
index 1d87ce3..62552b2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
@@ -315,11 +315,15 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
public void launchCamera() {
mFlashlightController.killFlashlight();
Intent intent = getCameraIntent();
- if (intent == SECURE_CAMERA_INTENT &&
- !mPreviewInflater.wouldLaunchResolverActivity(intent)) {
+ boolean wouldLaunchResolverActivity = mPreviewInflater.wouldLaunchResolverActivity(intent);
+ if (intent == SECURE_CAMERA_INTENT && !wouldLaunchResolverActivity) {
mContext.startActivityAsUser(intent, UserHandle.CURRENT);
} else {
- mActivityStarter.startActivity(intent, false /* dismissShade */);
+
+ // We need to delay starting the activity because ResolverActivity finishes itself if
+ // launched behind lockscreen.
+ mActivityStarter.startActivity(intent, false /* dismissShade */,
+ wouldLaunchResolverActivity /* afterKeyguardGone */);
}
}
@@ -333,7 +337,8 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
}
});
} else {
- mActivityStarter.startActivity(PHONE_INTENT, false /* dismissShade */);
+ mActivityStarter.startActivity(PHONE_INTENT, false /* dismissShade */,
+ mPreviewInflater.wouldLaunchResolverActivity(PHONE_INTENT));
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 788d5ce..9fd3d9c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -2039,8 +2039,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
@Override
- public void startActivity(Intent intent, boolean dismissShade) {
- startActivityDismissingKeyguard(intent, false, dismissShade);
+ public void startActivity(Intent intent, boolean dismissShade, boolean afterKeyguardGone) {
+ startActivityDismissingKeyguard(intent, false, dismissShade, afterKeyguardGone);
}
public ScrimController getScrimController() {
@@ -2929,7 +2929,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
public void startActivityDismissingKeyguard(final Intent intent, boolean onlyProvisioned,
- final boolean dismissShade) {
+ final boolean dismissShade, final boolean afterKeyguardGone) {
if (onlyProvisioned && !isDeviceProvisioned()) return;
final boolean keyguardShowing = mStatusBarKeyguardViewManager.isShowing();
@@ -2939,7 +2939,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
AsyncTask.execute(new Runnable() {
public void run() {
try {
- if (keyguardShowing) {
+ if (keyguardShowing && !afterKeyguardGone) {
ActivityManagerNative.getDefault()
.keyguardWaitingForActivityDrawn();
}
@@ -2947,7 +2947,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
mContext.startActivityAsUser(
intent, new UserHandle(UserHandle.USER_CURRENT));
- overrideActivityPendingAppTransition(keyguardShowing);
+ overrideActivityPendingAppTransition(
+ keyguardShowing && !afterKeyguardGone);
} catch (RemoteException e) {
}
}
@@ -2957,7 +2958,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
return true;
}
- });
+ }, afterKeyguardGone);
}
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@@ -3019,10 +3020,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
@Override
- protected void dismissKeyguardThenExecute(final OnDismissAction action) {
+ protected void dismissKeyguardThenExecute(final OnDismissAction action,
+ boolean afterKeyguardGone) {
if (mStatusBarKeyguardViewManager.isShowing()) {
if (UnlockMethodCache.getInstance(mContext).isMethodInsecure()
- && mNotificationPanel.isLaunchTransitionRunning()) {
+ && mNotificationPanel.isLaunchTransitionRunning() && !afterKeyguardGone) {
action.onDismiss();
mNotificationPanel.setLaunchTransitionEndRunnable(new Runnable() {
@Override
@@ -3031,7 +3033,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
});
} else {
- mStatusBarKeyguardViewManager.dismissWithAction(action);
+ mStatusBarKeyguardViewManager.dismissWithAction(action, afterKeyguardGone);
}
} else {
action.onDismiss();
@@ -3270,7 +3272,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
private void handleStartSettingsActivity(Intent intent, boolean onlyProvisioned) {
- startActivityDismissingKeyguard(intent, onlyProvisioned, true /* dismissShade */);
+ startActivityDismissingKeyguard(intent, onlyProvisioned, true /* dismissShade */,
+ false /* afterKeyguardGone */);
}
private static class FastColorDrawable extends Drawable {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
index e041de0..b6792f5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
@@ -524,19 +524,20 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
} else if (v == mAlarmStatus && mNextAlarm != null) {
PendingIntent showIntent = mNextAlarm.getShowIntent();
if (showIntent != null && showIntent.isActivity()) {
- mActivityStarter.startActivity(showIntent.getIntent(), true /* dismissShade */);
+ mActivityStarter.startActivity(showIntent.getIntent(), true /* dismissShade */,
+ false /* afterKeyguardGone */);
}
}
}
private void startSettingsActivity() {
mActivityStarter.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS),
- true /* dismissShade */);
+ true /* dismissShade */, false /* afterKeyguardGone */);
}
private void startBatteryActivity() {
mActivityStarter.startActivity(new Intent(Intent.ACTION_POWER_USAGE_SUMMARY),
- true /* dismissShade */);
+ true /* dismissShade */, false /* afterKeyguardGone */);
}
public void setQSPanel(QSPanel qsp) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index 3338f6a..b4e2d57 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -65,6 +65,7 @@ public class StatusBarKeyguardViewManager {
private boolean mLastOccluded;
private boolean mLastBouncerShowing;
private boolean mLastBouncerDismissible;
+ private OnDismissAction mAfterKeyguardGoneAction;
public StatusBarKeyguardViewManager(Context context, ViewMediatorCallback callback,
LockPatternUtils lockPatternUtils) {
@@ -118,9 +119,14 @@ public class StatusBarKeyguardViewManager {
updateStates();
}
- public void dismissWithAction(OnDismissAction r) {
+ public void dismissWithAction(OnDismissAction r, boolean afterKeyguardGone) {
if (mShowing) {
- mBouncer.showWithDismissAction(r);
+ if (!afterKeyguardGone) {
+ mBouncer.showWithDismissAction(r);
+ } else {
+ mBouncer.show();
+ mAfterKeyguardGoneAction = r;
+ }
}
updateStates();
}
@@ -245,6 +251,7 @@ public class StatusBarKeyguardViewManager {
mPhoneStatusBar.hideKeyguard();
mStatusBarWindowManager.setKeyguardFadingAway(false);
mViewMediatorCallback.keyguardGone();
+ executeAfterKeyguardGoneAction();
}
});
} else {
@@ -266,11 +273,19 @@ public class StatusBarKeyguardViewManager {
mStatusBarWindowManager.setKeyguardShowing(false);
mBouncer.hide(true /* destroyView */);
mViewMediatorCallback.keyguardGone();
+ executeAfterKeyguardGoneAction();
updateStates();
}
}
+ private void executeAfterKeyguardGoneAction() {
+ if (mAfterKeyguardGoneAction != null) {
+ mAfterKeyguardGoneAction.onDismiss();
+ mAfterKeyguardGoneAction = null;
+ }
+ }
+
/**
* Dismisses the keyguard by going to the next screen or making it gone.
*/
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
index 0586a83..acb4827 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
@@ -140,7 +140,8 @@ public class VolumeUI extends SystemUI {
@Override
public void run() {
getComponent(PhoneStatusBar.class).startActivityDismissingKeyguard(
- ZenModePanel.ZEN_SETTINGS, true /* onlyProvisioned */, true /* dismissShade */);
+ ZenModePanel.ZEN_SETTINGS, true /* onlyProvisioned */, true /* dismissShade */,
+ false /* afterKeyguardGone */);
mPanel.postDismiss(mDismissDelay);
}
};