看来我要回答我自己的问题了。我不确定有多少人会感兴趣,但你永远不知道。
9 月 18 日更新:现在有一个简短的答案,一年前我第一次回答时还没有。即,我自己的 WebLock 应用:
https://play.google.com/store/apps/details?id=com.simionescu.vlad.weblock
以下是我的原始答案,大致说明了如何以编程方式完成此操作。
所以我开始挖掘,看起来可以完成。它甚至没有我担心的那么困难,尽管我也不会说这很容易。
要点如下:
我编写了一个应用程序,该应用程序基本上将网站置于原生 Android 锁定屏幕上。 (实际上,我已经有一个应用程序,并在其中添加了此功能,但这并不重要。主要是我的方法需要编写一个应用程序。)
所以我想这介于上述情况 1 和 3 之间。我确实需要一个应用程序,但它不是一个成熟的自定义锁定屏幕,如下所述。
这当然意味着该方法更通用,它适用于任何应用程序,而不仅仅是用于显示网站。
为活动窗口设置 FLAG_SHOW_WHEN_LOCKED,如下所示:
How to make our own lock screen in android instead of default lock screen
但是我只用了这个标志,链接中提到的其他3个我不需要。
在设备屏幕关闭之前启动 Activity(如果它尚未运行)并将其设置在顶部,即收到 ACTION_SCREEN_OFF 事件。这样,当屏幕关闭时,该应用程序始终可见,因此下次启动时,Android 会将其置于锁定屏幕前。 (至少如果它是标准的;从文档看来它也应该使用自定义锁屏,但我没有测试它。我想这取决于自定义锁屏的编写方式。无论如何,我不'不一定希望我的网站在自定义锁定屏幕上,如果用户有一个他可能不想在它前面看到我的网站)。
这也意味着如果设备关闭然后打开,即使它没有被锁定,该站点也会出现在前面。这是我想要的。
通过 BOOT_COMPLETED 事件在启动时自动启动应用程序
捕获标准后退键(这是允许的,与主页键不同)并使其在终止应用程序时充当主页键。
我故意让 home 键正常工作。这当然意味着按下它(这是用户退出应用程序并进入设备的方式)后,会显示下方的锁定屏幕。否则我将不得不自己处理密码保护设备,这绝不是我想做的事情。这种方法有一些缺点,但 IMO 它们很小。为简单起见,我选择这样做。
此外,通过这种方式,我的应用程序仍然可靠,如果我劫持了 home 键,无论如何它都不会可靠。
如前所述,这意味着这不是成熟的自定义锁定屏幕,只是将网站置于默认锁定屏幕之上的一种方式。
(11 月 18 日更新)还有一点更重要。如前所述,这样的应用程序可能存在安全问题。我不是专家,所以我不确定它是否真的如此,如果是,它有多重要,但你永远不能太安全。如果用户可以不加检查地访问任何站点,当处于锁定屏幕时,这意味着如果手机丢失并且坏人找到了它,他可以访问具有可以解锁设备的危险代码的站点。我不确定它是否真的可以完成,但我不会感到惊讶。因此,对于任何编写此类应用程序的人来说,一个好的建议是严格(但合理地)限制在锁定屏幕上的 Web 导航。
这些是要点,还有一些其他的实现细节,但我暂时将它们放在一边。
所有这些在我看来都是标准且可靠的,因为它们都在官方 Android 文档中。
我在我的 KitKat 设备以及 2 个模拟器上对其进行了测试,其中一个也装有 KitKat,另一个装有最新最好的模拟器。一切似乎都很好。包括设备/模拟器受密码保护的情况。
所以我刚刚编写了应用程序并将其发布在 Google Play 上。在这里:
https://play.google.com/store/apps/details?id=com.a50webs.intelnav.worldtime
这意味着现在 Google Play 上至少有一个应用程序具有此功能。它的表现如何还有待观察。在接下来的几周内,我可能需要进行一些小的更正,但除此之外应该没问题。
此外,在接下来的几周内,可能是一个月左右,我计划根据用户的要求推出另一个应用程序,该应用程序通常可以在任何网站上执行此操作。
(更新 11 月 18 日)我终于编写了应用程序并将其放在 Google Play 上。它比计划花费了一点时间,但它已经准备好了。在这里:
https://play.google.com/store/apps/details?id=com.simionescu.vlad.weblock&hl=en
如上所述,在锁定屏幕上时,导航仅限于同一域,因此如果坏人找到了手机,他就无法访问某些恶意软件站点并解锁它。