如何在屏幕锁定时显示活动?

时间:2010-09-25 09:26:17

标签: android locking screen

我的应用程序是在汽车停靠事件中启动的,我想在我插入设备时唤醒手机(由系统完成)并解锁屏幕。 是不可能的?

4 个答案:

答案 0 :(得分:42)

我用于将活动提升到顶级

    private Window wind;
    @Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    /******block is needed to raise the application if the lock is*********/
    wind = this.getWindow();
    wind.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
    wind.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    wind.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
    /* ^^^^^^^block is needed to raise the application if the lock is*/
}

答案 1 :(得分:21)

使用Activity.getWindow()获取活动窗口;使用Window.addFlags()在WindowManager.LayoutParams中添加您想要的以下标志中的任何一个:FLAG_DISMISS_KEYGUARDFLAG_SHOW_WHEN_LOCKEDFLAG_TURN_SCREEN_ON

这是标准汽车停靠站(和桌面停靠站)应用程序实现此行为的方式。

答案 2 :(得分:4)

您只能将FLAG_DISMISS_KEYGUARD用于没有安全保护锁定的手机,例如模式锁定。

FLAG_SHOW_WHEN_LOCKED只会将您当前的活动置于最高位置,如果用户尝试移动到其他位置,则必须解锁屏幕。

或者,您可以在清单中添加权限:

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

并且,在您的创建活动中:

KeyguardManager manager = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock lock = manager.newKeyguardLock("abc");
lock.disableKeyguard(); 

答案 3 :(得分:4)

当使用锁定模式或引脚条目时,我还需要添加以下内容,因为屏幕在不到5秒的时间内关闭:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);