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

标签 android google-calendar-api google-api-java-client

我正在使用相同的查询以两种不同的方式获取日历事件。奇怪的是,一种方式有效,另一种方式无效,尽管一切几乎完全相同。在 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/

相关文章:

android - 将我的位置标记显示在所有其他标记之上

java - Spring : Google authentication redirect_uri_mismatch and URL wont open on browser

oauth - 获取空刷新 token

android - android kitkat版本中消息访问配置文件(MAP)的文件夹结构

Android Gradle 1.0 Computing Version code in multi-flavor setup

php - 使用自定义日历颜色嵌入 Google 日历

java - 如何使用 java 将 CSV 日历导入我的 Google 日历

java - 动态 Web 项目中的谷歌日历 api (java) 身份验证错误

java - 使用 API 和服务帐户创建的新日历不可见

android - build.gradle文件冲突并在设备上创建两个完全相同的应用程序