我有一个Android应用程序,它管理和显示来自本地SQLite数据库的数据等事件。
我想为我的客户提供将数据从数据库转换为.ics文件并将该文件导入日历的选项。
我知道如何从我的数据库中创建和存储有效的.ics文件。
我的问题是将该文件导入谷歌或任何其他日历。 我不想创建自定义本地日历,我只是想“打开”ics文件,以便用户可以选择日历或直接导入数据。
用户互动 - > .ics文件创建 - >将所有事件导入日历
有什么建议吗?这甚至可能吗?
答案 0 :(得分:0)
几个星期前我遇到了同样的问题。我找到了如何将单个任务或事件导出到Google日历。检查完整信息here
我引用了从上面的链接向日历添加事件的方法:
要将条目添加到特定日历,我们需要配置一个 要使用ContentValues插入的日历条目,如下所示:
ContentValues event = new ContentValues();
每个事件都需要绑定到特定的日历,所以第一件事 你想要设置的是日历的标识符 将此事件插入:
event.put("calendar_id", calId);
然后我们设置了一些有关该事件的基本信息,包括 字符串字段,例如事件标题,描述和位置。
event.put("title", "Event Title"); event.put("description", "Event Desc"); event.put("eventLocation", "Event Location");
有许多不同的选项可用于配置时间和 活动日期。
我们可以按如下方式设置事件开始和结束信息:
long startTime = START_TIME_MS; long endTime = END_TIME_MS; event.put("dtstart", startTime); event.put("dtend", endTime);
如果我们要添加生日或假日,我们会将条目设置为 一整天的活动:
event.put("allDay", 1); // 0 for false, 1 for true
此信息足以满足大多数参赛作品的需求。但是,有一个 其他有用的日历条目属性的数量。
例如,您可以将事件状态设置为暂定(0),已确认 (1)或取消(2):
event.put("eventStatus", 1);
您可以通过将其可见性设置为来控制谁可以查看此事件 default(0),confidential(1),private(2)或public(3):
event.put("visibility", 0);
您可以控制事件是否消耗时间(可以有时间表) 通过将透明度设置为不透明(0)来在日历上进行冲突 或透明的(1)。
event.put("transparency", 0);
您可以按如下方式控制事件是否触发提醒警报:
event.put("hasAlarm", 1); // 0 for false, 1 for true
正确配置日历事件后,我们就可以使用了 ContentResolver将新的日历条目插入到 适合日历活动的Uri:
Uri eventsUri = Uri.parse("content://calendar/events"); Uri url = getContentResolver().insert(eventsUri, event);
对insert()方法的调用与Calendar内容提供程序联系 并尝试将该条目插入适当的用户日历。 如果您导航到日历应用程序并启动它,您应该 在相应的日历中查看您的日历条目。自从 日历同步,如果您是在线,您还可以在线查看日历条目 在网络上使用Google日历。
答案 1 :(得分:0)
您可以查看Google Calendar API的import
服务。它需要在Getting Started页面上解释的calendarId
。
请求正文将包含您要附加的文件(尽管它仅限于Google云端硬盘,因此您可能还需要查看Drive API)
Events
资源attachments
字段说明
attachments [] list事件的文件附件。目前仅支持Google云端硬盘附件。 为了修改附件,supportsAttachments请求参数应设置为true。
每个活动最多可以有25个附件,