我已在下面编写代码,使用切换按钮切换我的Android手机的KeyGaurd
。但我面临着一种奇怪的行为。
它成功禁用keygaurd
但是。没有重新启用。
btnToggleLock.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (btnToggleLock.isChecked()) {
toast.cancel();
toast.setText("Unlocked");
toast.show();
Log.i("Unlocked", "If");
KeyguardManager myKeyGuard = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock myLock = myKeyGuard
.newKeyguardLock(KEYGUARD_SERVICE);
myLock.disableKeyguard();
} else {
toast.cancel();
toast.setText("Locked");
toast.show();
KeyguardManager myKeyGuard = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock myLock = myKeyGuard
.newKeyguardLock(KEYGUARD_SERVICE);
myLock.reenableKeyguard();
Log.i("Locked", "else");
}
}
});
它成功禁用keygaurd
但是。没有重新启用。
if
以及else
我也使用android 2.2.1 motoralla milestone
。
答案 0 :(得分:1)
这里的问题是每次执行“if”语句时都要创建一个新的Lock(KeyGuardLock)。您可以在创建锁时第一次禁用锁定,但必须首先“重新启用”您禁用的锁,否则无法创建新锁。
解决方案是将锁定在onClickListener之外。即从“if”语句中取出以下代码,并在设置onClickListener之前声明它: -
KeyguardManager myKeyGuard = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock myLock = myKeyGuard
.newKeyguardLock(KEYGUARD_SERVICE);