如何在android上在特定时间发出通知?

2023-12-29

我想在特定时间向我的应用程序发出通知。假设每天我都必须在早上 7 点发出通知,即使应用程序已关闭。

我怎样才能做到这一点?有教程吗? 请注明链接。


首先你需要使用广播接收器。并且因为广播接收器只启动很短的时间

来自 android 开发者博客。处理广播时,应用程序会被赋予一组固定的时间(当前为 10 秒)来完成其工作。如果它没有在这段时间内完成,应用程序将被视为行为不当,并且其进程会立即进入后台状态,以便在需要时被杀死以获取内存。

使用意向服务是一种更好的做法,这里有一个如何做到这一点的示例。

这是广播接收器类。

public class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }

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

        Intent intent1 = new Intent(context, MyNewIntentService.class);
        context.startService(intent1);
    }
}

并将其注册到清单中。

<receiver
    android:name=".MyReceiver"
    android:enabled="true"
    android:exported="false" >
</receiver>

这是意图服务类。

public class MyNewIntentService extends IntentService {
    private static final int NOTIFICATION_ID = 3;

    public MyNewIntentService() {
        super("MyNewIntentService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        Notification.Builder builder = new Notification.Builder(this);
            builder.setContentTitle("My Title");
            builder.setContentText("This is the Body");
            builder.setSmallIcon(R.drawable.whatever);
        Intent notifyIntent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 2, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        //to be able to launch your activity from the notification 
        builder.setContentIntent(pendingIntent);
        Notification notificationCompat = builder.build();
        NotificationManagerCompat managerCompat = NotificationManagerCompat.from(this);
        managerCompat.notify(NOTIFICATION_ID, notificationCompat);
    }
}

并将其注册到清单中。

<service
    android:name=".MyNewIntentService"
    android:exported="false" >
</service>

然后在您的活动中设置闹钟管理器以在特定时间启动广播接收器,并使用 AlarmManager setRepeating 方法重复它,下面的示例将每天重复它。

 Intent notifyIntent = new Intent(this,MyReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast
            (context, NOTIFICATION_REMINDER_NIGHT, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,  System.currentTimeMillis(),
            1000 * 60 * 60 * 24, pendingIntent);

我希望这能帮到您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在android上在特定时间发出通知? 的相关文章

随机推荐

  • jQuery 数据绑定 - 现在流行的插件是什么?

    我需要某种类型的 JS MVC DataBinding 解决方案 与实施 GMAIL Web 应用程序类似 消息索引和消息显示 在消息显示的位置 如果您修改消息 它会自动在消息索引中更新 我应该学习什么插件才能在不使用大量 jQuery 的
  • Tensorflow 中的入队和增量变量

    如何使张量流图将递 增的数字推送到队列 我这样做只是为了学习目的 所以我希望您保持它与我正在做的事情相似 并纠正我做错的事情 这是我的代码 import tensorflow as tf create queue queue tf Rand
  • 通过 attr_accessor 对模型对象进行排序

    当我必须对对象列表进行排序时 我认为 attr accessor 具有与另一个相同的行为 但似乎有所不同 dataRecords MyData where day Time now yesterday strftime Y m d to i
  • 仅禁用自动生成的表单上的特定“绿色加号”图标

    如何在自动生成的表单中禁用特定 manytomany 或 foreignkey 字段上的绿色图标 使用CSS如下 add another display none 禁用所有我不想要的 一个例子是工作日模型 存储从星期一到星期日的天数 指向该
  • Python 的多处理和内存

    我在用multiprocessing imap unordered对值列表执行计算 def process parallel fnc some list pool multiprocessing Pool for result in poo
  • 来自 Cordova iOS 插件的后续回调不会触发

    我在从 cordova 插件 iOS 插件 立即触发后续回调时遇到麻烦 在 XCode 调试器中 我清楚地看到它跳过了 self commandDelegate sendPluginResult pluginResult callbackI
  • ORA-01036: 通过 C# 运行查询时非法变量名称/编号

    我正在尝试使用ALTER USER在以下代码中 使用 C 中的 OracleCommand 查询 Oracle 数据库 如果用户名和密码的值不是空字符串 它将创建查询 但我收到一个错误 ORA 01036 illegal variable
  • 与带有分隔符的 String.Split 相反 (.net)

    有没有办法做相反的事情String Split在 Net 中 也就是说 用给定的分隔符组合数组的所有元素 Taking a b c 和给予 a b c 带有分隔符 UPDATE 我自己找到了答案 它是String Join method 找
  • 从 MS Excel 访问 Redis?

    我想使用 Redis 从命令行 脚本 Web 和电子表格中查询数据 除了电子表格之外 我可以找到很好的例子 不过 我不太知道从哪里开始访问 MS Excel 电子表格 谷歌让我失望了 请让我知道您建议如何执行此操作 谢谢 附注对于那些不熟悉
  • Spring MVC 请求映射

    我正处于学习使用 Spring MVC 的早期阶段 我创建了一个控制器并应用了RequestMapping对其进行注释 当我运行该项目时 索引页面按预期显示index htm 但是当我导航到应该指向我的控制器的 URI 时 我收到 404
  • 使用 HttpModule 进行本地化安全吗?

    我正在考虑使用 HttpModule 进行本地化 基于中的示例 本文 http weblogs manas com ar smedina 2008 12 17 internationalization in aspnet mvc 但我很好奇
  • Boost Beast 异步 Websocket 服务器 如何与会话交互?

    所以我不知道为什么 但我无法理解 boost Beast websocket 服务器以及如何 或应该 与其交互 我制作的基本程序看起来像这样 跨 2 个类 WebSocketListener and WebSocketSession htt
  • Java(Web 服务 - SOAP)- 如何在客户端添加 SOAP 处理程序并正确启用 MTOM?

    Java JDK 1 6 0 7 WSGEN 版本 JAX WS RI 2 2 3 b01 我有以下问题 SOAPBinding binding SOAPBinding BindingProvider port getBinding bin
  • 是否可以在 GitHub 上搜索特定文件名?

    我知道 GitHub Web 界面可让您在所有存储库中搜索具有特定路径名的文件 例如搜索path app models user rb产生 gt 109k 结果 但是有没有一种方法可以在所有存储库中搜索独立于其子目录位置的文件名 我尝试在中
  • 查看文件是否为空[重复]

    这个问题在这里已经有答案了 可能的重复 在 Windows 上用 Java 检查文件是否为空的最有效方法 https stackoverflow com questions 7190618 most efficient way to che
  • Gradle 测试任务不运行带有 @Category 和 @RunWith 注释的 JUnit 测试

    Gradle 不使用 Category 和 RunWith 注释运行我的 JUnit 测试 Java 8 Gradle 4 2 1 我的 JUnit 类 public interface FastTest Category FastTest
  • 无法在Rails测试环境中使用TimescaleDB

    我被困在 Rails 中使用 TimescaleDB 开发中一切正常 但在我的测试套件中我无法插入任何数据 我尝试过的 A 使用 SQL 模式转储 这导致了我看到的原始错误消息 它确实为 TimescaleDB 创建了部分架构 但不是全部
  • 删除多余的空格,但使用 C# 中的正则表达式保留新行[重复]

    这个问题在这里已经有答案了 我正在使用这个正则表达式 Regex Replace value Trim s 将多余的空间修剪并最小化为一个空间 问题是它也删除新行从文字来看 如何修复正则表达式以保留新行 排除 CRLF S r n 在空白类
  • 理解 python subprocess.check_output 的第一个参数和 shell=True [重复]

    这个问题在这里已经有答案了 我对如何正确使用 Python 的 subprocess 模块感到困惑 特别是 check output 方法的第一个参数和shell选项 查看下面交互式提示的输出 我将第一个参数作为列表传递 并取决于是否she
  • 如何在android上在特定时间发出通知?

    我想在特定时间向我的应用程序发出通知 假设每天我都必须在早上 7 点发出通知 即使应用程序已关闭 我怎样才能做到这一点 有教程吗 请注明链接 首先你需要使用广播接收器 并且因为广播接收器只启动很短的时间 来自 android 开发者博客 处