Android com.google.api.services.calendar.calendar可以';“我得不到事件,但”;“初级”;

Android com.google.api.services.calendar.calendar可以';“我得不到事件,但”;“初级”;,android,google-calendar-api,Android,Google Calendar Api,在MainActivity类中,我有一个AsyncTask内部类用于从日历检索事件: private class MakeRequestTask extends AsyncTask<Void, Void, List<>> { private com.google.api.services.calendar.Calendar mService; private Exception mLastError = null; MakeRequestTas

在MainActivity类中,我有一个AsyncTask内部类用于从日历检索事件:

private class MakeRequestTask extends AsyncTask<Void, Void, List<>> {

    private com.google.api.services.calendar.Calendar mService;
    private Exception mLastError = null;

    MakeRequestTask(GoogleAccountCredential credential) {

        HttpTransport transport = AndroidHttp.newCompatibleTransport();
        JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

        mService = new com.google.api.services.calendar.Calendar.Builder(
                transport, jsonFactory, credential)
                .setApplicationName(getString(R.string.app_name))
                .build();
    }

    @Override
    protected List<> doInBackground(Void... params) {

        try {
            return getDataFromApi();
        } catch (Exception e) {

            mLastError = e;
            cancel(true);
            return null;
        }
    }

    private List<> getDataFromApi() throws IOException {

        DateTime now = new DateTime(System.currentTimeMillis());

        List<> eventDates = new ArrayList<>();

                Events events = mService.events().list("primary")
                .setMaxResults(30)
                .setTimeMin(now)
                .setOrderBy("startTime")
                .setSingleEvents(true)
                .execute();

        List<Event> items = events.getItems();

        String sameDateTime = null;
        boolean showDate;

        for (Event event : items) {

            DateTime start = event.getStart().getDateTime();

            eventDates.add(new AppointmentItem(event.getId(),
                    start,
                    event.getSummary(),
                    event.getLocation())
            );
        }

        return eventDates;
    }
}
私有类MakeRequestTask扩展了AsyncTask{
private com.google.api.services.calendar.calendar mService;
私有异常mLastError=null;
MakeRequestTask(GoogleAccountCredential凭证){
HttpTransport-transport=AndroidHttp.newCompatibleTransport();
JsonFactory JsonFactory=JacksonFactory.getDefaultInstance();
mService=new com.google.api.services.calendar.calendar.Builder(
运输、jsonFactory、凭证)
.setApplicationName(getString(R.string.app_name))
.build();
}
@凌驾
受保护列表doInBackground(无效…参数){
试一试{
返回getDataFromApi();
}捕获(例外e){
mLastError=e;
取消(真);
返回null;
}
}
私有列表getDataFromApi()引发IOException{
DateTime now=新的日期时间(System.currentTimeMillis());
List eventDates=new ArrayList();
Events=mService.Events().list(“主”)
.setMaxResults(30)
.setTimeMin(现在)
.setOrderBy(“startTime”)
.setSingleEvents(真)
.execute();
List items=events.getItems();
字符串sameDateTime=null;
布尔显示日期;
用于(事件:项目){
DateTime start=event.getStart().getDateTime();
eventDates.add(新任命项)(event.getId(),
开始
event.getSummary(),
event.getLocation())
);
}
返回事件日期;
}
}
如果在list方法中,我将“primary”作为日历ID传递,则可以正常工作
Events=mService.Events().list(“primary”)

这是默认设置,但我希望从与特定帐户关联的每个日历中检索事件

所以我四处寻找,发现
CalendarList=mService.CalendarList().list().execute()
可以从日历中获取所有数据(包括日历的ID),但是如果我将ID放在前面的语句中,则不会返回任何事件


如何修复它?

授权用户和日历ID是否相同?如果不是,则除非您调用的日历是公共的或与授权用户共享,否则您将无法获取任何事件。Hi@Mr.Rebot,我认为这是相同的,因为mService是com.google.api.services.calendar.calendar的同一个实例。在calendarList中,我有一个不同的共享日历所有者帐户,没有授权用户。如何检查/设置授权的日历?我很困惑,您正在访问用户的日历?是吗?是的,mService(日历实例)可以检索“主”日历的事件。我的问题是访问同一用户拥有的部分或全部日历。我想困难在于日历ID,如何选择共享的日历ID?在我的日历帐户中,我有6个日历,如果我将提供的ID放入日历的设置中,我只会获得1个日历(以及主日历)的事件。