web-dev-qa-db-ja.com

AndroidでGoogleカレンダーのイベントを読む方法は?

私はすべてのAndroidカレンダーイベントを読んでおり、以下のコードを使用して正常に動作していますが、ユーザーのメールアカウントからすべてのGoogleカレンダーイベントを取得したいのですが、どうすればよいですか?提案やサンプルプログラムは本当に役に立ちます!

例:[email protected](Android mobile)で開設したメールアカウント)のイベントを取得したい

public static void readCalendarEvent(Context context) throws ParseException {
        ContentResolver contentResolver = context.getContentResolver();
        Calendar calendar = Calendar.getInstance();
        String dtstart = "dtstart";
        String dtend = "dtend";


        SimpleDateFormat    displayFormatter = new SimpleDateFormat("MMMM dd, yyyy (EEEE)");

         stime=displayFormatter.format(calendar.getTime());     

        SimpleDateFormat startFormatter = new SimpleDateFormat("MM/dd/yy");
        String dateString = startFormatter.format(calendar.getTime());

        long after = calendar.getTimeInMillis();
        SimpleDateFormat formatterr = new SimpleDateFormat("hh:mm:ss MM/dd/yy");
        Calendar endOfDay = Calendar.getInstance();
        Date dateCCC = formatterr.parse("47:59:59 " + dateString);
        endOfDay.setTime(dateCCC);



        cursor = contentResolver.query(Uri.parse("content://com.Android.calendar/calendars"), (new String[] { "calendar_id", "title", "description", "dtstart", "dtend","eventTimezone", "eventLocation" }), "(" + dtstart + ">" + after + " and " + dtend + "<" + endOfDay.getTimeInMillis() + ")", null, "dtstart ASC");
        gCalendar = new ArrayList<GoogleCalendar>();
        try {


            if (cursor.getCount() > 0) {


                while (cursor.moveToNext()) {
                    GoogleCalendar googleCalendar = new GoogleCalendar();
                    gCalendar.add(googleCalendar);
                    int calendar_id = cursor.getInt(0);
                    googleCalendar.setCalendar_id(calendar_id);
                    String title = cursor.getString(1);
                    googleCalendar.setTitle(title);
                    String description = cursor.getString(2);
                    googleCalendar.setDescription(description);
                    String dtstart1 = cursor.getString(3);
                     dt=convertDate(dtstart1,"hh:mm:ss");

                    googleCalendar.setDtstart(dt);                  

                String dtend1 = cursor.getString(4);
                    googleCalendar.setDtend(dtend1);


                    String eventTimeZone=cursor.getString(5);
                    googleCalendar.setEventTimeZone(eventTimeZone);
                    String eventlocation = cursor.getString(6);

                    googleCalendar.setEventlocation(eventlocation);



                }
            }
        } catch (AssertionError ex) {
            ex.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
13
Anand

この投稿は少し古いですが、AndroidでCalendarコンテンツプロバイダーに関連するデータを取得するための別の簡単なソリューションは次のとおりです。

このライブラリを使用してください: https://github.com/EverythingMe/easy-content-providers

そして今、すべてのカレンダーを取得します。

CalendarProvider calendarProvider = new CalendarProvider(context);
List<Calendar> calendars = calendarProvider.getCalendars().getList();

または、特定のカレンダーのすべてのイベントを取得します。

List<Event> calendars = calendarProvider.getEvents(calendar.id).getList();

また、リマインダー、参加者、インスタンスを取得するオプションもあります。

リストまたはカーソルで動作し、サンプルアプリがあり、外観と動作を確認できます。実際、すべてのAndroidコンテンツプロバイダー:連絡先、SMS、通話、...すべてのオプションを含む完全なドキュメント:- https://github.com/EverythingMe/easy-content-providers/wiki/Android-providers

それが役に立ったことを願っています:)

4
sromku

あなたは読むことができます このページ 。カレンダー情報の入手方法が書かれています。

簡単に言えば、

  1. Androidデバイスにログインしたアカウントを取得します。(戻りオブジェクトはアカウントです。)
  2. 特定のカレンダーリストを取得します。
  3. 特定の時間の範囲内のイベントを取得します。 (1つのカレンダー用です。)
  4. すべてのカレンダーに対して3を繰り返します。
0
Sohyun Ahn