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:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user