android - 如何让应用程序在 2011 年 4 月 1 日触发一组操作?

标签 android

我正在尝试在我妻子的手机上开发一个应用程序,在 4 月 1 日,当然是愚人节那天恶作剧她。该应用程序会将她的背景更改为看起来像屏幕破裂,当我在我的 Droid 上尝试时,背景非常有说服力(我被类似地恶作剧)。

无论如何,深入研究它是如何工作的,我认为这是一个完整的过程,但是,我可能对这个问题看得太远了。我开始研究设置闹钟,但是,我对一些事情感到困惑:

  1. 每次我妻子重启手机时,她的手机是否有必要在后台加载这个恶作剧应用程序?我假设是的,因为我相信这个恶作剧应用程序很可能会调用广播接收器来“收听”2011 年 4 月 1 日?

  2. 如果应用程序不需要每次都在后台加载,什么有助于 Android 提醒我的应用程序并在 2011 年 4 月 1 日到来时触发它?

我希望这有任何意义,基本上,我想确保此应用程序在 2011 年 4 月 1 日运行,即使我妻子的手机崩溃或重启也是如此。

完成这项工作最直接的方法是什么?如果我没有正确理解广播接收器,我深表歉意,这是一个我不习惯的新概念。 Service 和 Broadcast Receiver 功能是 Android 原生的,而不是任何其他语言,不是吗?

感谢您帮助这个 NEWB :)

最佳答案

为愚人节做计划还为时过早,嗯? :)

您只需要一个BroadcastReciever

创建一个 BroadcastRecieverBOOT_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_WALLPAPERRECEIVE_BOOT_COMPLETED 权限。

关于android - 如何让应用程序在 2011 年 4 月 1 日触发一组操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3800949/

相关文章:

android - Android 5.0 Release模式下的 INSTALL_FAILED_DEXOPT 错误

android - style属性不使用android : namespace prefix的原因

android - 有没有快速的方法来切换 Android 模拟器中的黑暗模式?

当应用程序在后台时,Android altbeacon 的间隔范围

android - Listview 不显示任何内容,但调试器显示数据

java - OnItemLongClickListener 不适用于 Firebase 数据库填充的 ListView

java - OnTouch MotionEvent Action 移动未触发

日志猫中的Android Studio "Clear All",更改日志级别过滤器时日志仍然返回

android - 我想在 SQLite 中添加数据后更新我的 ListView

android - 广播 "com.android.vending.INSTALL_REFERRER"什么时候发送?