0

私はプログラムでContentResolverを使用してユーザーのデフォルトカレンダーにいくつかのイベントを追加するアンドロイドアプリを開発しています。Androidカレンダーのカスタムイベントの色がデフォルト(青色)に変更され続ける

私は、イベントの種類に基づいてイベントの色を設定します(私の場合、休日は緑、平日は赤です)。これは正常に動作しますが、数分後にすべてのカスタムカラーリングが青色(デフォルトのGoogleカレンダーイベントカラー)に変わります。私はデバッグにNexus 5Xを使用しています。どのようにこれを解決するための任意のアイデア?

スクリーンショット:

enter image description here

enter image description here

コード:

// add work day event 
if (DateFrom > today.getTimeInMillis() && WorkType == '0') { 
       ContentResolver cr = context.getContentResolver(); 
       ContentValues values = new ContentValues(); 
       values.put(CalendarContract.Events.DTSTART, DateFrom); 
       values.put(CalendarContract.Events.DTEND, DateTo); 
       values.put(CalendarContract.Events.TITLE, Team + " (Id: " + Id + ")"); 
       values.put(CalendarContract.Events.DESCRIPTION, "Work Day."); 
       values.put(CalendarContract.Events.CALENDAR_ID, DEFAULT_CALENDAR_ID); 
       values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().toString()); 
       values.put(CalendarContract.Events.EVENT_COLOR, Color.RED); 

       Uri eventUri = cr.insert(CalendarContract.Events.CONTENT_URI, values); 
       long eventID = Long.parseLong(eventUri.getLastPathSegment()); 
} 

// add day off event 
if (DateFrom > today.getTimeInMillis() && WorkType == '2' && IsApproved != null && IsApproved.equals("true")) { 

       ContentResolver cr = context.getContentResolver(); 
       ContentValues values = new ContentValues(); 
       values.put(CalendarContract.Events.ALL_DAY, 1); 
       values.put(CalendarContract.Events.DTSTART, DateFrom + 3600000); 
       values.put(CalendarContract.Events.DURATION, "P23H"); 
       values.put(CalendarContract.Events.TITLE, "Day Off!" + " (Id: " + Id + ")"); 
       values.put(CalendarContract.Events.DESCRIPTION, "Day Off"); 
       values.put(CalendarContract.Events.EVENT_COLOR, Color.GREEN); 
       values.put(CalendarContract.Events.CALENDAR_ID, DEFAULT_CALENDAR_ID); 
       values.put(CalendarContract.Events.HAS_ALARM, false); 
       values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().toString()); 

       Uri eventUri = cr.insert(CalendarContract.Events.CONTENT_URI, values); 
       long eventID = Long.parseLong(eventUri.getLastPathSegment()); 
} 

答えて

0

ドキュメントは言う:

EVENT_COLOR

個々のイベントのための二色。これは、特定のアカウントのシンクアダプタによってのみ更新される必要があります。

UPD:は 正しい方法は、あなたがCalendarContract.Colorsから選択することができEVENT_COLOR_KEYを使用することです。 documentation

関連する問題