Steve - you're doing exitKeyguardSecurely, and I think you should be doing disableKeyguard.
Chronologically, when the unlock pattern is turned on, I think the sequence should be: - Keyguard is on - You call disableKeyguard - The keyguard goes away - You show your activity, which should not let the user do anything dangerous - The user does something to leave your activity - You call exitKeyguardSecurely - The unlock pattern shows - The user unlocks it - your onKeyguardExitResult is called - then you can do the work you wanted to do as a result of the user's input on your activity I also had trouble with onPause being called at times I was not expecting during this process. I recommend lots of tracing! None of that helps with the power stuff, of course. My next experiment will be to actually hold the wakelock for several seconds. I'd love to see a working sample for this stuff.... Richard On Feb 25, 8:10 am, SteveV <[email protected]> wrote: > Thanks for sharing... > I had the following code.. which works on the emulator, but I can't > get it to work on my phone (with or without the pattern lock enabled): > > I had a line in my onPause that calls reenableKeyguard(), if > unlocked==true. > I'll keep trying - I noticed your code uses > PowerManager.ON_AFTER_RELEASE. I'll report back if adding that helps > or if I figure it out myself. > > //wake phone > Log.d(TAG, "mWakeLock.acquire/release()"); > PowerManager pm = (PowerManager) getSystemService > (Context.POWER_SERVICE); > mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK > | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TEST"); > mWakeLock.acquire(); > mWakeLock.release(); > > //unlock phone > KeyguardManager km = (KeyguardManager) getSystemService > (Context.KEYGUARD_SERVICE); > mKeyguardLock = km.newKeyguardLock("TEST"); > if (km.inKeyguardRestrictedInputMode()){ > km.exitKeyguardSecurely(new > KeyguardManager.OnKeyguardExitResult(){ > @Override > public void onKeyguardExitResult(boolean > success) { > if (success){ > Log.d(TAG, > "onKeyguardExitResult success"); > } else { > Log.d(TAG, > "onKeyguardExitResult ! success"); > } > } > }); > Log.d(TAG, "inKeyguardRestrictedInputMode - > disableKeyguard"); > mKeyguardLock.disableKeyguard(); > unlocked = true; > } > > On Feb 24, 10:22 am, jarkman <[email protected]> wrote: > > > As far as I can tell, my PowerManager code works properly when the > > device is on charge, but generally doesn't wake the device up when it > > is not on charge. I shall keep digging. Perhaps I need to hold the > > wakelock for longer to stop it snoozing. > > > R > > > On Feb 23, 11:24 pm, SteveV <[email protected]> wrote: > > > > Does anyone know how to do this correctly? > > > > I can't find any examples & the API documentation is pretty hard to > > > follow. > > > > I am guessing I need to use the KeyGuardManager and PowerManager... > > > but can't figure out how to bring my activity up past the keyguard and > > > re-enable the keyguard so my activity doesn't let someone get past the > > > lock when my activity awakens. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

