am b684251e: Fix problems with KeyguardManager.exitKeyguardSecurely() and the FLAG_SHOW_WHEN_LOCKED window manager flag.

Merge commit 'b684251e8f1e85ea9483af2b80bc92f0fd8ded1c' into eclair-mr2

* commit 'b684251e8f1e85ea9483af2b80bc92f0fd8ded1c':
  Fix problems with KeyguardManager.exitKeyguardSecurely() and the FLAG_SHOW_WHEN_LOCKED window manager flag.
This commit is contained in:
Mike Lockwood
2009-12-02 09:49:26 -08:00
committed by Android Git Automerger

View File

@@ -172,7 +172,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
// these are protected by synchronized (this)
/**
* External apps (like the phone app) can tell us to disable the keygaurd.
* This is set to false if the keyguard is disabled via setKeyguardEnabled(false).
*/
private boolean mExternallyEnabled = true;
@@ -400,15 +400,31 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
// don't allow this api when the device isn't provisioned
if (DEBUG) Log.d(TAG, "ignoring because device isn't provisioned");
callback.onKeyguardExitResult(false);
} else if (mExternallyEnabled) {
// this only applies when the user has externally disabled the
// keyguard. this is unexpected and means the user is not
// using the api properly.
Log.w(TAG, "verifyUnlock called when not externally disabled");
callback.onKeyguardExitResult(false);
} else if (mExitSecureCallback != null) {
// already in progress with someone else
callback.onKeyguardExitResult(false);
} else if (mExternallyEnabled) {
if (mHidden) {
if (isSecure()) {
// if the current activity is in front of the keyguard, then
// pretend like we succeeded and we will hit the lock screen
// when the activity is launched.
// HACK ALERT - this is assuming that the callback will be used
// to start a new activity (current usage by Phone app).
callback.onKeyguardExitResult(true);
} else {
// call through to verifyUnlockLocked() so we can bypass
// the insecure keyguard screen.
mExitSecureCallback = callback;
verifyUnlockLocked();
}
} else {
// this only applies when the user has externally disabled the keyguard
// and no other activities are in front of the keyguard.
// this is unexpected and means the user is not using the api properly.
Log.w(TAG, "verifyUnlock called when not externally disabled");
callback.onKeyguardExitResult(false);
}
} else {
mExitSecureCallback = callback;
verifyUnlockLocked();