如何使FLAG_SHOW_WHEN_LOCKED与TYPE_KEYGUARD_DIALOG一起使用

时间:2015-02-16 15:22:50

标签: android

我一直在开发具有锁定屏幕功能的Android应用程序,这样一旦我的LockScreen活动启动,默认锁定屏幕应暂时禁用,直到活动存在。

在搜索时,我发现使用FLAG_SHOW_WHEN_LOCKED很容易。但是当我添加TYPE_KEYGUARD_DIALOG以禁用HOME按钮时,它就停止了工作。

再次搜索我最终找到了使用代码的解决方案

KeyguardManager.KeyguardLock k1;
KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
k1 = km.newKeyguardLock("IN");
k1.disableKeyguard();

但不推荐使用KeyguardManager.KeyguardLock类型。

有没有办法在不使用KeyguardLock的情况下完成这项工作?

我的代码 -

public void onAttachedToWindow() {
    // TODO Auto-generated method stub
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG | WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().addFlags(
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    | WindowManager.LayoutParams.FLAG_FULLSCREEN);
    super.onAttachedToWindow();
}

2 个答案:

答案 0 :(得分:0)

发现我的问题不再适用了。无法为Jellybean +手机创建锁屏。所以现在放弃了这个功能。

原因,

  1. 不推荐使用KeyguardManager.KeyguardLock。
  2. 使用onAttachedToWindow()会导致Jellybean +。
  3. 出错

答案 1 :(得分:0)

如果您仍然需要回答,请尝试使用FLAG_DISMISS_KEYGUARD KeyguardLock,如果它不起作用,您只需要保留KeyguardLock并在{@SuppressWarnings("deprecation")之前添加@Override 1}}。 此外,您并不总是需要onAttachedToWindow()使用this.getWindow().addFlags(WindowManager.LayoutParams.*here flag that you need*),而您必须在setContentView()之前执行此操作。