android - 如何在特定时间推送通知(提醒)?

android - how to push notification (reminder) on a specific time?

我检查了堆栈溢出和 google 文档中的几乎所有问题,但仍然无法理解确切地 对我的案例使用什么。

我想要的是,用户将在应用程序中 select 提醒日期,并且在那个时间应用程序将发送通知,即使 应用程序已关闭或 phone 在提醒设置之间重新启动时间和提醒时间。

那我需要用什么?我需要哪个 类? Broadcast Receiver, AlarmManager 这两个就够了还是什么?代码示例 20-30 行会很好 =)

你需要这两样东西。

设置: 您需要将您的应用设置为监听 phone,首先在您的清单中注册 this 意图。

基本上你当你的用户选择的时候,你会需要:

  1. 将时间保存在 file/db/shared 首选项中。
  2. 设置闹钟管理器以在正确的时间唤醒您的应用程序
  3. 当报警管理器发送 你一个广播,启动一个服务来做必要的工作(广播 接收者必须在短时间内完成他们的工作,所以 最好开个服务)
  4. 在您的服务中,删除时间 来自您的 file/db/shared 偏好

如果您的应用收到 phone 已重启的广播,那么您的所有闹钟都会丢失。您需要使用保存在 file/db/shared 首选项中的时间来重置它们。

查看 Android 开发者网站以了解日历意图,以便您可以使用它们来确定时间等。 在您的广播接收器上将详细信息或时间传递给广播接收器。一旦你这样做,使用闹钟管理器等来检查时间是否完美,并在时间正确时发送推送通知。

我这么说是假设您已经了解日历、警报管理器和广播接收器的意图。如果你不这样做,我建议用 Android 开发人员附加到谷歌搜索以下内容。

  1. 使用AlertManager.set在特定时间发送通知。
  2. 要重新设置警报通知,请使用

    <receiver android:name=".AfterBootReceiver" android:label="AfterBootReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"></action>
    </intent-filter>
    

@Override public void onReceive(Context context,Intent intent){

    ...
    }

在设备重新启动后重置 AlarmManager.set。