我写了下面的代码来切换KeyGaurd
我的 Android 手机使用切换按钮。但我面临着一种奇怪的行为。
-
它禁用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.1motoralla milestone
.
这里的问题是,每次执行“if”语句时,您都会创建一个新的锁(KeyGuardLock)。您可以在第一次创建锁时将其禁用,但必须“重新启用”您首先禁用的锁,并且无法创建新锁。
解决方案是在 onClickListener 之外进行锁定。即,从“if”语句中取出以下代码并在设置 onClickListener 之前声明它:-
KeyguardManager myKeyGuard = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock myLock = myKeyGuard
.newKeyguardLock(KEYGUARD_SERVICE);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)