一些上下文:我有一个我自己使用的报警应用程序,当警报在你之前请求的时间内关闭时,它会锁定屏幕。基本上,你的手机在x分钟内是一块响亮的砖块。唯一的问题是,我昏昏欲睡的自己是非常不合理的。早上,我发现如果我关掉手机,到应用程序的位置,并卸载它之前,接收器被打电话(启动完成),然后我可以绕过它,我的手机砖。当我的LG G2开着4.2.2的时候,这并不是什么大问题,因为我通常需要重新启动手机5-8次才能卸载这个应用程序,所以我放弃了,并且放弃了尝试。现在,我升级到4.4.2,接收器大约在10秒后被调用,允许我每次第一次尝试删除这个应用程序。使这个应用程序完全无用。
我尝试过的是:我尝试过在清单中使用quick_boot,但我认为这只适用于宏达电,因为on_boot没有因为某种原因而被要求使用该操作系统。我也尝试了用户在场,似乎只有在启动完成后,做的事情,如解锁您的手机工作。
真的没有办法让onReceive比onBoot更快地被调用吗?如果没有,我只是希望有人能给出一个明确的答案。
发布于 2014-08-01 23:41:29
我应该在提出这个问题一周左右后回答这个问题,因为我找到了一个非常有用的解决办法,尽管它有点草率。
我使用意图过滤器创建了一个新的活动(HomeLock)。homeLock扩展活动,我的旧主活动(AlarmMain)现在扩展homeLock而不是活动。homeLock所做的就是启动覆盖服务(因此您不能停止警报/使用电话),当alarmMain确定当前是否应该响警报时,它将关闭该服务。在alarmMain中,现在有一个按钮,上面写着"change home“,它可以让homeLock成为家庭应用程序。现在,当您关闭电话并在调用onBootReceived之前重新启动并删除应用程序时(这会启动广播接收器(触发警报和覆盖)),就会调用homeLock活动,它会在屏幕上放置一个覆盖,直到应用程序确定是否应该播放警报(在onBootReceived之后)之后才能删除。
基本上,在您进入睡眠之前,只需从应用程序内部或通过设置将此应用程序设置为您的家庭应用程序。现在,应该是不可能删除应用程序或关闭警报一旦它已经开始铃声,直到它已经响了它的持续时间,因为总有一个覆盖在屏幕上,即使在重新启动手机。
显然,这是只需要为手机启动缓慢或非常退化的睡眠者,或两者都像我。虽然这不太可能对任何人有所帮助,因为这是一个非常独特的问题,我认为我应该发布我一直在使用的解决办法,以防有人最终发现它有用。
发布于 2014-05-01 20:31:20
在某些情况下是这样。我不是百分之百肯定,但我认为(有些)系统应用比ACTION_BOOT_COMPLETED事件有更高的优先级。ACTION_SCREEN_ON应该在ACTION_BOOT_COMPLETED之前被触发。
https://stackoverflow.com/questions/23415377
复制相似问题