将.ics文件导入Android设备上的谷歌日历

时间:2016-01-04 21:48:13

标签: android import calendar google-calendar-api icalendar

我有一个Android应用程序,它管理和显示来自本地SQLite数据库的数据等事​​件。

我想为我的客户提供将数据从数据库转换为.ics文件并将该文件导入日历的选项。

我知道如何从我的数据库中创建和存储有效的.ics文件。

我的问题是将该文件导入谷歌或任何其他日历。 我不想创建自定义本地日历,我只是想“打开”ics文件,以便用户可以选择日历或直接导入数据。

用户互动 - > .ics文件创建 - >将所有事件导入日历

有什么建议吗?这甚至可能吗?

2 个答案:

答案 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个附件,