【问题标题】:Android: Can't re-enable the keyguard after disabling itAndroid:禁用后无法重新启用键盘保护
【发布时间】:2013-03-12 03:28:01
【问题描述】:

我正在尝试在我的应用程序中创建一个选项(使用复选框首选项),以供用户禁用和重新启用锁定屏幕。我使用 disableKeyguard() 来禁用锁定屏幕,它可以完美地工作,但我无法让 reenableKeyguard() 工作。代码很简单,不知道为什么不行。

public void onSharedPreferenceChanged(SharedPreferences taskprefs,
        String tasks_pref) {
    boolean skiplock = taskprefs.getBoolean("pref_skiplock", false);
    boolean screentimeout = taskprefs.getBoolean("pref_screentimeout",
            false);

    skiplock(skiplock);

    // Log.v("TaskActivity", "Skiplock value is " + skiplock);
    // Log.v("TaskActivity", "ScreenTimeout value is " + screentimeout);
}

private void skiplock(boolean action) {
    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE);
    KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
    //
    if (action == true) {
        lock.disableKeyguard();
        Toast.makeText(getApplicationContext(), "Lockscreen Disabled",
                Toast.LENGTH_SHORT).show();
    }
    //
    else if (action==false) {
        lock.reenableKeyguard();
        Toast.makeText(getApplicationContext(), "Lockscreen Enabled",
                Toast.LENGTH_SHORT).show();
    }
}

【问题讨论】:

  • 您找到解决方案了吗??我有同样的问题。
  • @QadirHussain 是的,在下面发布了答案。

标签: android locking screen preferences keyguard


【解决方案1】:

问题是每次调用 skiplock() 方法时都会在其中创建(声明)一个新的 Keyguard 对象。一个简单的解决方案是将 keyguard 声明为全局对象并引用该单个对象,以便在方法执行完成时不会重置其状态。

简而言之,只需使用“KeguardLock lock”和“KeyguardManager keyguardManager”作为全局构造函数即可。

【讨论】:

猜你喜欢
  • 2018-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多