Android 强制自定义主屏幕应用程序,不允许恢复默认设置

Android 强制自定义主屏幕应用程序,不允许恢复默认设置,android,android-intent,Android,Android Intent,我想在我孩子的手机上有一个家长控制选项,它可以这样工作:使用手机的唯一方法是做一些可能会很无聊的事情。目标是阻止频繁使用手机。因此,如果手机处于关机状态或屏幕空白/空闲状态,并且他们打开手机时,手机会显示一个锁屏,锁屏会让他们做一些事情,他们只能在完成要求他们做的事情后访问所有其他正常的手机功能 现在,在android 4.0之前,我将实现一个锁屏应用程序,我就完成了。但是,4.0+版本无法捕获home button press(主页按钮按下)事件,因此锁屏应用程序无法工作,他们只需点击home

我想在我孩子的手机上有一个家长控制选项,它可以这样工作:使用手机的唯一方法是做一些可能会很无聊的事情。目标是阻止频繁使用手机。因此,如果手机处于关机状态或屏幕空白/空闲状态,并且他们打开手机时,手机会显示一个锁屏,锁屏会让他们做一些事情,他们只能在完成要求他们做的事情后访问所有其他正常的手机功能

现在,在android 4.0之前,我将实现一个锁屏应用程序,我就完成了。但是,4.0+版本无法捕获home button press(主页按钮按下)事件,因此锁屏应用程序无法工作,他们只需点击home(主页)按钮

使用4.0+我仍然可以实现一个完整的主屏幕应用程序或启动器,但我可以捕捉主按钮按下事件。这一切看起来都很棒,但我的孩子们可以简单地进入菜单,在那里他们可以从所有可用的启动器中进行选择,他们将看到我的自定义启动器和默认启动器,他们可以简单地选择默认启动器


现在看来,我想用4.0+实现的目标根本不可能实现。这是真的吗?还是我忽略了什么?

你可以编写一个应用程序,利用其他应用程序的UI,而不是实现home或lock screen,这样你的孩子就必须完成那些无聊的任务,不管他们是锁定手机还是使用什么启动器

为了做到这一点,你需要实现一个服务,这样你的代码就可以在后台运行——因为你不会让自己的活动运行。 您可以通过调用Context.getSystemService获取对窗口管理器的引用:

mWindowManager=WindowManager getSystemServiceContext.WINDOW\u服务


一旦你参考了窗口管理器,只需创建你自己的视图,从XML中膨胀它,或者在代码中创建它,然后通过mWindowManger.addView…

将它添加到窗口中,但是这个应用程序需要由某个人/某物启动,如果孩子们决定不启动它,那么它将如何工作?为什么他们不能按home键绕过它呢。您的应用程序可以使用接收器收听屏幕开/关事件,并自动播放。2.即使孩子按下主屏幕上的按钮,他仍然会看到你的应用程序的用户界面,因为它会把你的应用程序的用户界面画在其他所有东西的上面,包括启动器。但是如果有来电呢?因为这会在应用程序启动时触发屏幕,这不是我想要的。在我的应用程序没有干扰的情况下,应该允许来电。这很容易解决-你所需要做的就是在你收到ScreenOn事件后,在你将你的UI置于一切之上之前检查手机状态。您可以通过在TelephonyManager上进行检查,或者使用一个广播接收器来监听电话的状态。别忘了你需要额外的许可,但我认为这在你的情况下不会是一个问题。听起来不错,还有一个问题:如果应用程序被杀死,有没有办法让它自动启动?我相信孩子们迟早会发现,阻碍他们的是一个可以随时停止的服务。