我正在尝试在我妻子的手机上开发一个应用程序,在 4 月 1 日,当然是愚人节那天恶作剧她。该应用程序会将她的背景更改为看起来像屏幕破裂,当我在我的 Droid 上尝试时,背景非常有说服力(我被类似地恶作剧)。
无论如何,深入研究它是如何工作的,我认为这是一个完整的过程,但是,我可能对这个问题看得太远了。我开始研究设置闹钟,但是,我对一些事情感到困惑:
每次我妻子重启手机时,她的手机是否有必要在后台加载这个恶作剧应用程序?我假设是的,因为我相信这个恶作剧应用程序很可能会调用广播接收器来“收听”2011 年 4 月 1 日?
如果应用程序不需要每次都在后台加载,什么有助于 Android 提醒我的应用程序并在 2011 年 4 月 1 日到来时触发它?
我希望这有任何意义,基本上,我想确保此应用程序在 2011 年 4 月 1 日运行,即使我妻子的手机崩溃或重启也是如此。
完成这项工作最直接的方法是什么?如果我没有正确理解广播接收器,我深表歉意,这是一个我不习惯的新概念。 Service 和 Broadcast Receiver 功能是 Android 原生的,而不是任何其他语言,不是吗?
感谢您帮助这个 NEWB :)
最佳答案
为愚人节做计划还为时过早,嗯? :)
您只需要一个BroadcastReciever
。
创建一个 BroadcastReciever
将 BOOT_COMPLETED
添加到它的 Intent 过滤器中。你 onRecieve()
将被调用。这将在 2 种情况下发生
1) 您的手机已启动。
2) 你拉响了警报。
要检查哪个事件发生了,请检查您收到的 Intent Action 是否为 “BOOT_COMPLETED”
,如果是,则您的手机会启动,因此设置 4 月 1 日的闹钟, 2011.(从技术上讲,您应该有自己的自定义 Intent Action,但在这种情况下您不需要它...)
现在,如果您的 Action 不是 Boot completed
,则表示它是 4 月 1 日
,因此在这种情况下,请使用 WallpaperManager
更改墙纸>。您的新壁纸显然会在您的资源中..
void onRecieve(Context ctx,Intent intent)
{
if( intent.getAction.equals( /* Boot Completed */)
{
//setup alarm using alarm manager
}else
{
//change wallpaper.
}
}
如果我误解了你的问题,我很抱歉,你需要警报管理器方面的帮助吗?
当然,正如 Macarse
指出的那样,您需要 SET_WALLPAPER
和 RECEIVE_BOOT_COMPLETED
权限。
关于android - 如何让应用程序在 2011 年 4 月 1 日触发一组操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3800949/