当前位置: 首页 > 知识库问答 >
问题:

默认情况下,通过日历API编程创建的日历在应用程序中不可见

臧俊杰
2023-03-14

我正在编写一个应用程序,该应用程序接收从API调用收到的事件,并通过Google的Calendar API创建一个新的自定义日历,然后根据需要添加/删除/更新日历中的事件。这一切都很好。我遇到的问题是,自定义日历在创建后默认情况下在Android Google日历应用程序中不可见。用户必须刷新然后设置

谷歌日历API:https://developers.google.com/google-apps/calendar/v3/reference/

我在日历API文档中没有看到任何方法允许我通过编程将创建的日历设置为同步/可见。有人知道这是否可能吗?如果是这样,你介意为我指出正确的方向吗?

提前谢谢你!

共有1个答案

邬宏扬
2023-03-14

日历提供者API可由应用程序和同步适配器使用。规则因调用的程序类型而异。本文档主要关注如何将日历提供程序API用作应用程序。

通过日历提供程序API,应用程序和同步适配器可以对保存用户日历数据的数据库表进行读/写访问。

同步适配器将用户设备上的日历数据与其他服务器或数据源同步。在日历合同中。日历和日历合同。事件表中,有保留给同步适配器使用的列。提供者和应用程序不应修改它们。事实上,除非作为同步适配器访问,否则它们是不可见的。

要读取日历数据,应用程序必须在其清单文件中包含“读取日历”权限。它必须包括写入日历权限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"...>
<uses-sdk android:minSdkVersion="14" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
...
</manifest>

这是一个辅助方法,您可以使用它来返回用于同步适配器的URI:

static Uri asSyncAdapter(Uri uri, String account, String accountType) {
return uri.buildUpon()
.appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,"true")
.appendQueryParameter(Calendars.ACCOUNT_NAME, account)
.appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
}

有关同步适配器的示例实现,请参阅SampleSyncAdapter:https://developer.android.com/samples/index.html

 类似资料:
  • 要在Google日历中添加事件,我创建了一个Google服务号,从中我获得了客户端ID、服务帐户名称和p12密钥。现在从我的代码中,它正在创建一个事件,但它创建了自己的新日历以插入具有服务号名称的事件。我想在我的Google帐户的默认日历中添加事件。下面是服务号事件插入的工作代码。

  • 接下来,我生成了自己的OAuth2客户机ID并使用它。这种方法很简单,直到我开始收到来自Google的“匿名使用过期”错误,一段时间后我意识到这是因为密钥没有启用只读日历范围。 我的下一个想法是公开日历,并使用静态API密钥,但日历是从一个名为Peak Pro的预订服务中同步的,该服务用参加活动的客户的姓名、电子邮件和电话号码填充日历描述。我不能公开揭露那些。 接下来,我被吸引到了CalDAV A

  • 假设我有一个谷歌帐户,其中项目(在谷歌开发者控制台中配置为谷歌应用引擎应用程序)和一个服务号,其中包含属于它的电子邮件地址。 我知道如何使用这个服务帐户创建日历并以编程方式操作其条目:我使用Google API客户端库(Java版本,带有服务帐户的凭据)在我的Google App Engine应用程序中调用Google calendar API,它就是这么做的。然而,任何这样创建的日历似乎都明显属

  • 我正在使用这段代码向日历添加一个新事件。 当这段代码运行时,它似乎一点都不出错。然而,当我使用默认的Android日历应用程序打开日历时,当我试图查看添加的事件时,它会崩溃。 这是值的转储 01-15 22:39:47.561:I/System.out(25804):值:CALENDAR_ID=2 EventLocation=FNDN title=DNDBDB DTSTART=1421386255

  • 我正在通过Google calendar API v3创建一系列活动(学校时间表)。我正在通过通过API控制台获得的OAuth凭据验证我的程序。除了所有活动都有我的Google帐户作为其创建者,并且程序创建的所有日历都显示在我的“其他日历”列表中之外,所有活动都运行良好。有没有办法改变这种行为? 我唯一能想到的是使用服务号(例如timetable@mydomain.com)登录API控制台并从中创

  • 如果有人分享了他们的谷歌日历(例如,用一个小部件显示在网页上),那么我就可以得到日历,例如:p75ig3ni1smg4267qg0j0nhodc@group.calendar.google.com 我想编写一个Alexa应用程序(在NodeJS中)来提供该日历中的信息。(我使用此示例作为模型:https://developers.google.com/google-apps/calendar/qu