2015-05-08 1 views
0

Я создаю событие в календаре Android, у которого есть правило повторения. Код выглядит следующим образом: -Создать событие с правилом в календаре android programatically

public long createEvents_Usertimelineview() 
{ 
    ContentResolver cr = getContentResolver(); 
    Calendar calendar = Calendar.getInstance(Locale.getDefault()); 
    long calID = 11; 
    long startMillis = 0; 
    long endMillis = 0; 

    String startdate_arr[]= {"2015", "05", "12"}; 
    String starttime_arr[]={"14", "00", "00"}; 


    calendar.set(Integer.parseInt(startdate_arr[0]),Integer.parseInt(startdate_arr[1])-1, 
      Integer.parseInt(startdate_arr[2]),Integer.parseInt(starttime_arr[0]), 
      Integer.parseInt(starttime_arr[1]),Integer.parseInt(starttime_arr[2])); // start Time: 00, 01,59 

    startMillis = calendar.getTimeInMillis(); 


    String startdate_arr1[]= {"2015", "05", "12"}; 
    String starttime_arr1[]= {"15", "30", "00"}; 

    calendar.set(Integer.parseInt(startdate_arr1[0]),Integer.parseInt(startdate_arr1[1])-1, 
      Integer.parseInt(startdate_arr1[2]),Integer.parseInt(starttime_arr1[0]), 
      Integer.parseInt(starttime_arr1[1]),Integer.parseInt(starttime_arr1[2])); //End Time: 23, 58,00 


    endMillis = calendar.getTimeInMillis(); 

    Calendar calendar2=Calendar.getInstance(Locale.getDefault()); 
    calendar2.setTimeInMillis(startMillis-endMillis); 


    ContentValues values = new ContentValues(); 
    values.put(CalendarContract.Events.DTSTART, startMillis); 
    values.put(CalendarContract.Events.DTEND, endMillis); 
    values.put(CalendarContract.Events.TITLE, "My Grand Demo Event"); 
    values.put(CalendarContract.Events.DESCRIPTION, ""); 
    values.put(CalendarContract.Events.CALENDAR_ID, calID); 
    values.put(CalendarContract.Events.EVENT_TIMEZONE,TimeZone.getDefault().getID()); 
    values.put(CalendarContract.Events.ALL_DAY, 0); 
    values.put(CalendarContract.Events.AVAILABILITY, "usertimelinedata"); 

    TimeZone timeZone = TimeZone.getDefault(); 
    values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID()); 
    values.put(CalendarContract.Events.RRULE,"FREQ=WEEKLY;COUNT=16;BYDAY=TU"); 

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

     values.put(CalendarContract.Events.ORGANIZER,""); 

    values.put(CalendarContract.Events.EVENT_LOCATION,""); 
    Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values); 

    long eventID = Long.parseLong(uri.getLastPathSegment()); 
    Log.e("","Event generate id.. "+eventID); 

    return eventID; 

} 

Настоящее событие создано отлично. Проблема заключается в том, что в календаре Android это событие отображается только в течение нескольких недель, а через несколько недель оно не отображается в календаре, тогда как в соответствии с его rrule он должен показывать 16 раз. Дата начала мероприятия - 12 мая 2015 года, и его никогда не заканчивается. Аналогичным образом та же проблема возникает для всех событий, имеющих rrule. Только устройство желания HTC, демонстрирующее события в совершенной манере, в то время как проблема приходит в moto g и устройство samsung. Пожалуйста, помогите разобраться с этой проблемой ...! enter image description here

когда я красть календарь это событие является не более ..

enter image description here

+1

Не могли бы вы обобщить вашу проблему? – DJhon

+0

Я объяснил проблему очень подробно и просто. Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы. –

+0

Signare, у вас есть решение? –

ответ

1

Попытка установить событие ПРОДОЛЖИТЕЛЬНОСТЬ вместо DTEND. Итак, прокомментируйте эту строку values.put (CalendarContract.Events.DTEND, endMillis); Добавьте эту строку values.put (CalendarContract.Events.DURATION, "PT1H"); PT1H означает 1 час. Это форматы RFC 545.

+0

Спасибо за ваш ответ, но я должен положить endMillis в эту строку. Как преобразовать формат endMillis в формат pt1H? Пожалуйста, предложите мне .... –

+0

Я не знаю, как это сделать. Для моего применения мне нужны были 1 час события. Вы можете прочитать здесь о RFC 5545 http://tools.ietf.org/html/rfc5545#section-3.8.2.5. –

+0

Спасибо, брату .. Он работает .. +1 –

Смежные вопросы