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