android中的日历事件和alarmManager服务

Posted

技术标签:

【中文标题】android中的日历事件和alarmManager服务【英文标题】:calendar events and alarmManager service in android 【发布时间】:2012-02-12 04:47:54 【问题描述】:

我正在尝试按如下方式创建应用程序:

用户插入一个事件时间并设置一些要在此时间完成的操作,例如 这段时间把手机调成震动模式或者关掉wifi,所以我会让用户插入他的事件数据,我会把它存储在android日历上。

然后将操作保存在数据库中。我需要的是一个在日历事件发生时触发的服务,这样我就可以捕获事件 ID 并将其与数据库中的操作进行比较,然后执行用户需要的操作。

请帮忙???

【问题讨论】:

你应该更清楚地解释你的任务,用更短的短语,也许可以按如下步骤进行结构化:1、2、3...,并用粗体标记重要的单词,例如。否则很难阅读您的问题。 我想在日历中存储的事件发生时执行操作,所以我想要监听日历的服务,当事件发生时我会做的事情ssss 【参考方案1】:

据我所知,我可能是错的,因为日历并未真正在操作系统级别实现,因此您无法直接绑定到您在手机上看到的事件触发器(提醒等)来了。

手机原生的日历应用程序或多或少是由设备制造商(HTS、摩托罗拉等)实现的,这意味着您无法绑定事件触发广播接收器(或服务)。

我相信随着日历 API 的引入,Ice Cream Sandwich 会有所不同......目前还没有很多 4.0 设备。

【讨论】:

【参考方案2】:

这个广播接收器至少可以在我的手机上工作(没有测试过其他人)。

A.在 manifest.xml 中使用接收器

<receiver android:name=".MyRemindersReceiver" >
            <intent-filter>
                <data android:scheme="content" />
                <action android:name="android.intent.action.EVENT_REMINDER" />
            </intent-filter>
</receiver>

B.在代码中使用接收器

    IntentFilter inFilter = new IntentFilter(CalendarContract.ACTION_EVENT_REMINDER);
    inFilter.addDataScheme("content");
    registerReceiver(myRemindersReceiver, inFilter);

在调试器中查看这条广播消息,似乎这条消息在 bundle 中没有额外内容。但是它在intent.getData() 中有一个Uri,我认为它是日历事件的Uri。因此,您需要查询此 uri 以获取有关剩余事件的更多信息。

【讨论】:

以上是关于android中的日历事件和alarmManager服务的主要内容,如果未能解决你的问题,请参考以下文章

android app被杀死 alarmmanager能不能唤醒

如何在android中向AlarmManager添加3个日期

Android 日历提醒软件是如何开发的

如何使用android中的回收器视图将事件放在日历中[重复]

如何使用 Android Studio 中的意图读取一周的日历事件?

如何使用 android 使用日历 API 在谷歌日历上添加事件?