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中的回收器视图将事件放在日历中[重复]