28

Android 4以降でカレンダーイベントをプログラムで(直接)追加したい。これをエミュレータでテストすることは可能ですか? 私はアンドロイド携帯を持っていません。いくつかのサンプルコードをいただければ幸いです。Android 開発者の Calendar Provider を読みましたが、混乱しています。ユーザーの既定のカレンダーにイベントを追加するにはどうすればよいですか? 同期する必要はありません。

編集:インテントを追加するイベントを開始したくありません。代わりに、コードから完全に追加し、別のアクティビティを起動したくありません。デバイスのデフォルト ユーザーのメイン カレンダーにイベントが追加されることをエミュレータでテストできる必要があります。ユーザーの既定のカレンダーを表示するようにエミュレーターを設定するにはどうすればよいですか?

4

7 に答える 7

45

これが私が最終的に作ったものの実際の例です

ContentResolver cr = ctx.getContentResolver();
ContentValues values = new ContentValues();
    
values.put(CalendarContract.Events.DTSTART, dtstart);
values.put(CalendarContract.Events.TITLE, title);
values.put(CalendarContract.Events.DESCRIPTION, comment);

TimeZone timeZone = TimeZone.getDefault();
values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());

// Default calendar
values.put(CalendarContract.Events.CALENDAR_ID, 1);

values.put(CalendarContract.Events.RRULE, "FREQ=DAILY;UNTIL="
        + dtUntill);
// Set Period for 1 Hour
values.put(CalendarContract.Events.DURATION, "+P1H");

values.put(CalendarContract.Events.HAS_ALARM, 1);

// Insert event to calendar
Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);

どこdtuntilですか

SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd");
Calendar dt = Calendar.getInstance();

// Where untilDate is a date instance of your choice, for example 30/01/2012
dt.setTime(untilDate);

// If you want the event until 30/01/2012, you must add one day from our day because UNTIL in RRule sets events before the last day
dt.add(Calendar.DATE, 1);
String dtUntill = yyyyMMdd.format(dt.getTime());

参照:Recurrence Rule

于 2012-12-27T14:15:09.637 に答える
20

あなたが探しているセクションは、インテントを使用してイベントを挿入することだと思います。このセクションでは、追加するイベントのインテントを作成する方法について説明します。その後、エミュレーターのデフォルトのカレンダープログラムが応答して追加します。カレンダープログラムが正しい情報を受信することを実際に確認したい場合は、カレンダープログラムが起動するように、ダミープロファイルを設定する必要がある場合があります。


Android Devサイトのコード:

Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 0, 19, 7, 30);
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 0, 19, 8, 30);
Intent intent = new Intent(Intent.ACTION_INSERT)
    .setData(Events.CONTENT_URI)
    .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
    .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
    .putExtra(Events.TITLE, "Yoga")
    .putExtra(Events.DESCRIPTION, "Group class")
    .putExtra(Events.EVENT_LOCATION, "The gym")
    .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
    .putExtra(Intent.EXTRA_EMAIL, "rowan@example.com,trevor@example.com");
startActivity(intent);
于 2012-12-04T18:34:25.207 に答える