【问题标题】:Lock screen without turning off锁屏不关机
【发布时间】:2013-12-16 10:01:03
【问题描述】:

使用lockNow()功能可以关闭显示器然后锁定,但是如何锁定显示器使其保持开启? 我想知道是否存在一种在不关闭显示器的情况下调用锁定屏幕的方法,这样用户就可以(最终)解锁它而无需按下电源按钮。

【问题讨论】:

    标签: android lockscreen


    【解决方案1】:

    您可以尝试在lockNow() 通话后使用类似的方式打开屏幕:

    PowerManager powerManager = ((PowerManager) getSystemService(Context.POWER_SERVICE));
    WakeLock screenLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");
    screenLock.acquire();
    screenLock.release();
    

    您需要向清单文件添加所需的权限:

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    

    【讨论】:

    • 好吧 Addrallyn 我得到了同样的结论,但是通过重复执行一个立即结束的活动(FLAG_SHOW_WHEN_LOCKED,FLAG_TURN_SCREEN_ON)。即使反过来,您的解决方法也比我的更优雅。除非有不涉及 ACTION_SCREEN_OFF 广播接收器的解决方案,否则我会接受您的回答。
    • 好像没有先关掉就锁屏的功能。
    【解决方案2】:

    还有另一种锁定屏幕的方法。试试那个。它可能会以不同的方式工作并且不会转动屏幕(我不能准确地说,你可以检查它)。您可以尝试使用KeyguardManager,而不是使用lockNow()。您可以通过更改 keyguard 属性来操作您的 lockscreen

    向清单文件添加所需的权限:

    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    

    然后你可以试试这样的:

    KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
    KeyguardLock l = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
    l.reenableKeyguard();
    

    【讨论】:

    • 不幸的是 reenableKeyguard() 似乎没有效果,至少在我的开发设备上。设备的显示屏未关闭,但仍保持解锁状态。
    猜你喜欢
    • 2013-07-31
    • 1970-01-01
    • 2011-11-13
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多