【问题标题】:How to view a public Google Calendar via an Android Application如何通过 Android 应用程序查看公共 Google 日历
【发布时间】:2014-03-07 02:45:04
【问题描述】:

到目前为止,我一定已经经历过基于 Google 日历的 Stack Overflow 问题,但运气不佳。我已经尝试了几个小时,但几乎没有结果。

我是 Java 和 Android 的新手,在该领域外几乎没有经验。基本上我遇到的主要问题是查看另一个用户设置为公开的 Google 日历。

目前,通过 Google 教程和其他网站,我已经设法显示日历,这非常简单。它只会加载并显示当前用户的日历。这可以从字面上完成(在布局中使用一个简单的按钮)。

    public void onClick(View view) {
    // A date-time specified in milliseconds since the epoch.
    long startMillis = System.currentTimeMillis();

    Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
    builder.appendPath("time");
    ContentUris.appendId(builder, startMillis);
    Intent intent = new Intent(Intent.ACTION_VIEW).setData(builder.build());
    startActivity(intent);
}

显然,这不会传递公共帐户或任何东西的任何用户数据,我一直在阅读 Google 教程中的 Calendar Provider 开发人员指南。我试图设置帐户详细信息,但它从来没有用过。我曾尝试将其用作同步适配器,但老实说,我只知道我做得不对。我不知道我是否真的需要使用同步适配器,因为我想做的只是查看事件,而不是修改任何内容或更新任何内容。

我正在使用 API 14+,并希望使用日历提供程序等。它看起来很简单,但我已经为此苦恼了几天,并投入了很多时间,但似乎我没有做任何事情.至少我有某种日历打开方式,但这不是我想要的。

这一切都取决于同步适配器吗?如果是这样,我将如何调用日历?另一个类似的问题有

private static Uri buildCalUri() {
return CalendarContract.Calendars.CONTENT_URI
        .buildUpon()
        .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
        .appendQueryParameter(Calendars.ACCOUNT_NAME, ACCOUNT_NAME)
        .appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL)
        .build();

}

我希望这与我需要的相似,但我非常不确定。在开发者教程中,如果帐户不在设备上,ACCOUNT_TYPE_LOCAL 很重要

任何帮助将不胜感激!

【问题讨论】:

    标签: java android view calendar


    【解决方案1】:

    适用于已遵循 Android Developer API 示例但仍无法找到如何添加公共日历的任何人。试试看

    CalendarListEntry gracieCal = new CalendarListEntry();
    gracieCal.setId("your-public-calendar-id");
    mService.calendarList().insert(gracieCal);
    
    Events events = mService.events().list(gracieCal.getId())
                    .setMaxResults(10)
                    .setTimeMin(new DateTime(System.currentTimeMillis()))
                    .setOrderBy("startTime")
                    .setSingleEvents(true)
                    .execute();
    List<Event> items = events.getItems();
    

    'mService' 是您应该已经创建的 com.google.api.services.calendar.Calendar 实例。 (见其他答案提到的api教程)

    “your-public-calendar-id”可以在您的公共谷歌日历的设置中找到。

    【讨论】:

      【解决方案2】:

      如果您希望将公共 Google 日历 (www.google.com/calendar) 与您的 Android 应用程序集成,您必须使用 Google Calendar API

      最简单的方法是下载Google Calendar Client Library from here,然后使用API Reference here。在客户端库页面中,您要下载“Google APIs Client Library for Java (rc)”包以集成到您的 Android 应用中。

      您首先需要访问 API Console to create an App with Calendar API Access

      如果你不想使用原生库,你甚至可以使用 REST API(使用 HTTP GET & POST 命令)example App here

      希望这会有所帮助。

      【讨论】:

      • 嘿伙计,是的,我确实有一个项目,其中包含所有这些。我使用了 Google 所做的一些视频会议上的示例日历项目。它让我做的只是查看日历本身,而不是里面的事件。除此之外,我无法解决任何问题,因为这对我来说真的很复杂。我想我可以在从 API 导入库和东西后尝试设置一些东西。我想我会再试一次。很遗憾,没有关于它如何工作的真实例子。我对大多数这些东西一无所知:(。谢谢
      • @Jamibi你找到解决方案了吗,现在如何访问事件的数据?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-23
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多