保持屏幕活动状态,并在锁屏前应用



当我启动谷歌地图导航时,它会保持屏幕活跃,如果我使用电源按钮将其关闭并再次打开,地图应用程序位于锁定屏幕上方,只有当我最小化应用程序时,我必须解锁屏幕。 所以我可以关闭和打开屏幕,并且仍然可以使用该应用程序而无需解锁屏幕

如何为我自己的应用程序实现这一点?

我知道我不能保持屏幕打开

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

但这并不能阻止我在关闭屏幕并再次打开屏幕后必须解锁屏幕。

您可以使用类似于屏幕固定选项的内容。应用程序将在锁定屏幕上,但它不是以编程方式完成的,但它会执行您想要的效果。

在屏幕上固定应用的说明:

  • 转到设置→安全→屏幕固定
  • 启用屏幕固定以及"取消固定前要求解锁图案"选项
  • 现在打开所需的应用程序,然后切换到概述菜单
  • 点击应用程序上的图钉图标。

但是,如果要使用代码执行此操作,请参阅属性:android:showOnLockScreen="true"和链接:

  • 默认锁定屏幕上的安卓活动
  • 在锁定屏幕上从服务启动活动会打开屏幕,但不显示活动本身
  • 锁定时显示旗帜

你应该移动getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)setContentView()下方,android:keepScreenOn="true"放入主布局的根视图中。

好的,感谢Arnauld Alex给出的答案,我明白了。 只需添加

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

setContentView(...)之前

最新更新