退出应用程序时以编程方式锁定屏幕

时间:2016-10-28 00:07:43

标签: android

Android中的某些应用程序似乎能够使屏幕保持超出正常超时(可能使用FLAG_KEEP_SCREEN_ON),但在退出应用程序时会锁定屏幕。我见过这个,例如在导航应用程序中,保持路线指引打开,但一旦您离开应用程序,屏幕就会锁定。

这是怎么做到的?

(请注意,当应用程序进入后台时,锁定应该发生,而不仅仅是当一个活动被同一个应用程序中的另一个活动替换时。)

1 个答案:

答案 0 :(得分:0)

我根据" Launch activity when user taps on a notification from the lockscreen"成功解决了这个问题。这是一个例子。使用此项目https://github.com/googlesamples/android-CustomNotifications/(例如Android Studio:文件>新>导入示例;查找("自定义通知")并替换onCreate,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Window window = this.getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.sample_main);
}

并在清单中添加

    <activity ...
         android:showOnLockScreen="true"
    ...

您现在发现,如果

,活动仍然存在
  • 按电源按钮关闭屏幕。按电源按钮激活屏幕,您的活动将恢复,无需解锁屏幕。
  • 让屏幕超时:再次按下电源按钮激活屏幕,恢复活动,无需解锁屏幕。

但是:一旦屏幕被锁定至少一次(通过超时或电源按钮),那么,当您离开应用程序时,屏幕会锁定(这会提供Lock screen programatically when exiting app的部分答案)。

但是,在屏幕至少锁定一次之前导航时,它无法正常工作。有人有建议吗?

此处的相关问题:Launch activity when user taps on a notification from the lockscreen (secure unlock)