首页 文章

Android - 输出Google日历中的事件列表

提问于
浏览
0

我会请你帮忙 . 现在我正在编写一个应用程序,它可以从Google日历中获取当前事件 . 但是,当我尝试从多个日历输出事件时,问题就在那里 . 我知道,我做错了什么,但真的,不能解决问题..

public class Main extends Activity {

        //TextView mInfo;
        TextView mEvents;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);     
            setContentView(R.layout.main);
            //mInfo = (TextView)findViewById(R.id.info);
            mEvents = (TextView)findViewById(R.id.events);

            String[] calendarName = {"Calendar1", "Calendar2", "Calendar3", "Calendar4", "Calendar5"};

            readCalendars(calendarName);
        }

        private void readCalendars(String[] calendarName)
        {
            String[] projection =
                    new String[]{
                            CalendarContract.Calendars._ID,
                            CalendarContract.Calendars.NAME,
                            CalendarContract.Calendars.ACCOUNT_NAME,
                            CalendarContract.Calendars.ACCOUNT_TYPE};
            Cursor calCursor =
                    getContentResolver().
                            query(CalendarContract.Calendars.CONTENT_URI,
                                    projection,
                                    CalendarContract.Calendars.VISIBLE + " = 1",
                                    null,
                                    CalendarContract.Calendars._ID + " ASC");
            long calId = -1;
            //String calendarAccount = "";
            for(int i = 0; i  0)
                {
                    if(cursor.moveToFirst())
                    {
                        do
                        {
                            long eventId = cursor.getLong(3);
                            events += getEventInfo(eventId,cursor.getLong(1),cursor.getLong(2),cursor.getString(4),cursor.getString(5),cursor.getString(6)) + "\n";
                        } while(cursor.moveToNext());
                    }
                }
                mEvents.setText(events);
            }
        }

        @SuppressLint("SimpleDateFormat")
        private String getEventInfo(long eventId,long startTime, long endTime,String description, String location,String title)
        {
                String eventInfo = "";
                {
                    DateFormat df = new SimpleDateFormat("HH:mm");
                    String start = df.format( new Date(startTime));
                    String end = df.format( new Date(endTime));
                    eventInfo = start + "-" + end + " Class: "+ location + "\nLecture: " + title + "\nLecturer: " + description;
                }
            return eventInfo;
        }
    }

试图用循环输出所有事件,但没有帮助 . 如果我传入 calendarName[i] ,其中我是现有日历之一,我得到日历的输出,我要求,但这只是一个日历,但是,例如,我需要输出5个日历 .

试图用ListView做任何事情 - 再次失败 .

希望,你会帮助解决这个问题,或者以某种方式帮助解决它 .

1 回答

  • 0

    CalendarContract.Calendars.CONTENT_URI可用于检索日历,但不能用于检索这些日历的实际事件 . 获得日历ID后,必须使用以下任一URI作为事件信息:

    • CalendarContract.Events.CONTENT_URI

    • CalendarContract.Instances.CONTENT_URI

相关问题