gpt4 book ai didi

android - 获取 Google 日历条目、Google API Java 客户端时错误的 startMin/startMax

转载 作者:行者123 更新时间:2023-11-29 14:28:25 25 4
gpt4 key购买 nike

我正在使用相同的查询以两种不同的方式获取日历事件。奇怪的是,一种方式有效,另一种方式无效,尽管一切几乎完全相同。在 Google 的 API Explorer 上使用 timeMin、timeMax 返回错误的请求,表示第二种方法发送的时间。

不仅如此,Google Calendar API 文档还说该字段应该是 start-min 和 start-max,而客户端和 API Explorer 说该字段应该是 timeMin 和 timeMax。

下面是适用于方法 1 的代码:

void setPeriod() {
Date nowDate = new Date();
startTime = new DateTime(nowDate);
Time t = new Time();
t.setToNow();
t.hour = 23;
t.minute = 59;
nowDate.setTime(t.toMillis(false));
endTime = new DateTime(nowDate);
}

new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
Events evlist = g.getClient().events().list(calendarIds.get(cal)).setTimeMin(startTime).setTimeMax(endTime).execute();
if (evlist.getItems() != null) {
//Parse the events
...
}.execute();

方法二:

new AsyncTask<Void, Void, List<Event>>() {
@Override
protected List<Event> doInBackground(Void... arg0) {
Date nowDate = new Date();
DateTime startTime = new DateTime(nowDate);
Time t = new Time();
t.setToNow();
t.hour = 23;
t.minute = 59;
nowDate.setTime(t.toMillis(true));
DateTime endTime = new DateTime(nowDate);
Calendar client = com.google.api.services.calendar.Calendar
.builder(transport, jsonFactory)
.setApplicationName("Wayk by Senti")
.setHttpRequestInitializer(
new HttpRequestInitializer() {
public void initialize(HttpRequest request)
throws IOException {
request.getHeaders()
.setAuthorization(
GoogleHeaders
.getGoogleLoginValue(authToken));
}
})
.setJsonHttpRequestInitializer(
new JsonHttpRequestInitializer() {

public void initialize(
JsonHttpRequest request)
throws IOException {
CalendarRequest calendarRequest = (CalendarRequest) request;
calendarRequest
.setKey(CalendarClientCredentials.KEY);
}
}).build();
try {
List<Event> events = new ArrayList<Event>();
for (int i = currentCal; i < enables.size(); i++) {
if (enables.get(i)) {
AiLog.v("Getting events");
AiLog.v("AuthToken: " + authToken);
AiLog.v("CalendarID: " + calendarIds.get(i));
AiLog.v("Calendar name: " + calendarNames.get(i));
AiLog.v("Calendar account: " + account);
Calendar.Events.List eventReq = client.events()
.list(calendarIds.get(i)).setTimeMin(startTime).setTimeMax(endTime).execute();//Bad request here

请注意,两者的客户端完全相同。第二种方法中的客户端成功获取了该帐户的日历列表。我已经验证了日历 ID 是正确的,这给我留下了来自 startMin 和 startMax 的错误。

感谢任何帮助。

干杯,Z

最佳答案

想通了。

必须使用接受TimeZoneDateTime 构造函数。

DateTime startTime = new DateTime(new Date(), TimeZone.getDefault());

希望这可以为其他人节省我花 16 个小时来解决这个问题的时间。非常糟糕的文档。

关于android - 获取 Google 日历条目、Google API Java 客户端时错误的 startMin/startMax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11531081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com