一些背景: 我有一个我自己使用的警报应用程序,当警报响起你之前请求的持续时间时锁定屏幕。基本上你的手机是一个振铃砖x分钟。唯一的问题是我昏昏欲睡的自我是非常不合理的,早上我发现,如果我关闭手机并到达应用程序位置并在接收器被调用(启动完成)之前卸载它然后我可以绕过它砖砌我的手机。当我的LG G2处于4.2.2因为接收器调用速度有多快时,这并不是一件大事。我通常需要重新启动手机大约5-8次才能卸载应用程序所以我放弃了,放弃了尝试。现在,我升级到4.4.2并且大约10秒后调用接收器让我每次第一次尝试删除应用程序。使应用程序完全无用。
我尝试过: 我已尝试在清单中使用quick_boot,但我相信这只适用于HTC,因为on_boot由于某种原因没有为该操作系统调用。我还尝试过用户在场,只有在开机完成后才能解锁你的手机。
真的没有办法让onReceive比onBoot更快吗?如果不存在,那就有意义了,我只是希望有人可以提供明确的答案。
答案 0 :(得分:0)
在某些情况下确实如此。我不是100%肯定,但我认为(某些)系统事件的优先级高于ACTION_BOOT_COMPLETED事件。并且ACTION_SCREEN_ON应该在ACTION_BOOT_COMPLETED之前触发。
答案 1 :(得分:0)
在我问这个问题一周后我应该回答这个问题,因为我找到了一个非常有用的解决方法,但是,它有点草率。
我使用intent过滤器创建了一个新活动(homeLock)。 homeLock扩展了活动,我的旧主要活动(alarmMain)现在扩展homeLock而不是活动。所有homeLock都会启动覆盖服务(因此您无法停止警报/使用电话),当它确定警报当前是否应响铃时,将由alarmMain关闭。在alarmMain中,现在有一个按钮,显示“更改主页”,可让您将homeLock作为主页应用程序。现在,当您关闭手机并重新启动以尝试删除应用程序之前,调用onBootReceived启动广播接收器(触发警报和覆盖),调用homeLock活动,在屏幕上放置一个叠加层,直到它可以被删除应用程序确定是否应播放警报(在onBootReceived之后)。
基本上,在您进入睡眠状态之前,只需在应用程序内或通过设置将此应用程序设置为您的主应用程序。现在,应该无法删除应用程序或在闹钟开始响铃之后关闭闹钟,直到它响起其持续时间,因为即使重新启动手机,屏幕上也总会有覆盖。
显然,这种添加仅适用于启动缓慢或极度退化的睡眠者或两者都喜欢的手机。虽然这不太可能对任何人都有帮助,因为它是一个如此独特的问题,我认为我应该发布我一直在使用的解决方法,以防有人最终发现它有用。