我有一个安卓应用程序,它管理和显示本地SQLite数据库中的数据等事件。
我想为我的客户提供将数据从数据库转换为.ics文件并将该文件导入日历的选项。
我知道如何从我的数据库中创建和存储一个有效的.ics文件。
我的问题是将该文件导入google或任何其他日历。我不想创建自定义本地日历,我只是想“打开”ics文件,以便用户可以选择日历或让数据直接导入。
User Interaction -> .ics-文件创建并将所有事件导入到日历中
有什么建议吗?这有可能吗?
发布于 2016-01-05 16:26:00
几周前我也遇到过同样的问题。我发现了如何将单个任务或事件导出到Google Calendar。查看全部信息here
我引用了通过上面的链接将事件添加到日历的方法:
要向特定日历添加条目,我们需要使用ContentValues配置要插入的日历条目,如下所示:
新建事件= ContentValues ContentValues();
每个事件都需要绑定到特定的Calendar,因此您要设置的第一件事是要将此事件插入到的Calendar的标识符:
event.put("calendar_id",calId);
然后,我们设置事件的一些基本信息,包括事件标题、描述和位置等字符串字段。
Event.put(“标题”,“事件标题”);event.put(“描述”,“事件描述”);event.put("eventLocation",“事件位置”);
有许多不同的选项可用于配置事件的时间和日期。
我们可以按如下方式设置事件的开始和结束信息:
long startTime = START_TIME_MS;long endTime = END_TIME_MS;event.put("dtstart",startTime);event.put("dtend",endTime);
如果我们要添加生日或假日,我们会将条目设置为全天事件:
event.put("allDay",1);// 0代表false,1代表true
这些信息对于大多数条目来说已经足够了。但是,还有许多其他有用的日历条目属性。
例如,您可以将事件状态设置为临时(0)、已确认(1)或已取消(2):
event.put("eventStatus",1);
您可以通过将此事件的可见性设置为默认(0)、机密(1)、私有(2)或公共(3)来控制可以查看此事件的人员:
Event.put(“可见性”,0);
通过将事件的透明度设置为不透明(0)或透明(1),可以控制事件是否占用日历上的时间(可能存在日程冲突)。
Event.put(“透明”,0);
您可以通过以下方式控制事件是否触发提醒告警:
event.put("hasAlarm",1);// 0代表false,1代表true
正确配置日历事件后,我们就可以使用ContentResolver将新的日历条目插入到日历事件的适当Uri中:
Uri eventsUri = Uri.parse("content://calendar/events");Uri url = getContentResolver().insert(eventsUri,event);
对insert()方法的调用联系Calendar内容提供者,并尝试将条目插入到适当的用户Calendar中。如果您导航到Calendar应用程序并启动它,您应该会在相应的Calendar中看到您的日历条目。因为日历是同步的,所以如果你在网络上使用谷歌日历,你也会在网上看到日历条目。
发布于 2016-01-05 16:41:50
您可以查看Google Calendar API的import
服务。它将需要Getting Started页面上解释的calendarId
。
请求正文将包含您想要附加的文件(尽管它仅限于Google Drive,因此您可能还需要查看Drive API )
Events
资源attachments
字段描述
事件的
attachments[]列表文件附件。目前仅支持Google Drive附件。为了修改附件,supportsAttachments请求参数应该设置为true。
每个事件最多可以有25个附件,
https://stackoverflow.com/questions/34600486
复制相似问题