看来我要回答我自己的问题了。我不确定有多少人会感兴趣,但你永远无法知道。
9 月 18 日更新:现在有一个简短的答案,一年前我第一次回答时还没有。即我自己的 WebLock 应用程序:
https://play.google.com/store/apps/details?id=com.simionescu.vlad.weblock
以下是我的原始答案,它给出了如何以编程方式完成此操作的总体思路。
于是我开始挖掘,看起来是可以完成的。它甚至没有我担心的那么困难,尽管我也不会说它很容易。
主要有以下几点:
我编写了一个应用程序,基本上可以将网站置于本机 Android 锁定屏幕上。 (实际上,我已经有一个应用程序,并且我向其中添加了此功能,但这不太重要。主要是我的方法需要编写一个应用程序。)
所以我猜这属于上述情况 1 和 3 之间。我确实需要一个应用程序,但它不是一个成熟的自定义锁定屏幕,如下所述。
这当然意味着该方法更通用,它适用于任何应用程序,而不仅仅是用于显示网站。
为“活动”窗口设置 FLAG_SHOW_WHEN_LOCKED,如下所示:
如何在android中制作自己的锁屏而不是默认锁屏
但我只使用了这个标志,链接中提到的其他 3 个标志我不需要。
启动 Activity(如果尚未运行)并在设备屏幕关闭之前(即收到 ACTION_SCREEN_OFF 事件时)将其设置为顶部。这样,当屏幕关闭时,应用程序始终可见,因此下次启动时,Android 会将其放在锁定屏幕前面。 (至少如果它是标准的;从文档看来它也应该与自定义锁定屏幕一起使用,但我没有测试它。我想这取决于自定义锁定屏幕的编写方式。无论如何,我不知道不一定希望我的网站出现在自定义锁定屏幕上,如果用户有一个,他可能不希望在其前面看到我的网站)。
这也意味着,如果设备关闭然后再打开,即使设备未锁定,该网站也会显示在前面。这就是我的意图。
通过 BOOT_COMPLETED 事件在启动时自动启动应用程序
捕获标准后退键(这是允许的,与主页键不同),并使其在否则终止应用程序时充当主页键。
我故意让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 上。虽然比计划的时间要长一些,但已经准备好了。它在这里:
如上所述,在锁定屏幕上时,导航仅限于同一域,因此,如果坏人发现手机,他就无法访问某些恶意软件网站并解锁它。