2016-07-19 1 views
0

Я использую код для добавления события в календарь устройства. Код отлично работает во всех версиях Android, кроме Android. Событие, которое добавляется в Android M, отображается как день рождения, а не событие. Пожалуйста, помогите, как эта проблема может быть исправлена.Проблема с добавлением события календаря в Android M

код используется следующим образом

 // Add event to calendar 
     try { 
      ContentResolver cr = context.getContentResolver(); 
      ContentValues values = new ContentValues(); 
      values.put(CalendarContract.Events.DTSTART, startDateInMilliSeconds); 
      values.put(CalendarContract.Events.DTEND, endDateInMilliSeconds); 
      values.put(CalendarContract.Events.TITLE, title); 
      values.put(CalendarContract.Events.DESCRIPTION, description); 
      if (location != null && (!TextUtils.isEmpty(location))) { 
       values.put(CalendarContract.Events.EVENT_LOCATION, location); 
      } 
      values.put(CalendarContract.Events.CALENDAR_ID, 1); 
      values.put(CalendarContract.Events.EVENT_TIMEZONE, Calendar.getInstance() 
        .getTimeZone().getID());    
      Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values); 
      // Save the eventId into the Task object for possible future delete. 
      long eventId = Long.parseLong(uri.getLastPathSegment());    
      Uri openCalendarEvent = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, eventId); 
      Intent calIntent = new Intent(Intent.ACTION_VIEW).setData(uri); 
      calIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, startDateInMilliSeconds); 
      calIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endDateInMilliSeconds); 
      calIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(calIntent);    

     } catch (Exception e) { 
      e.printStackTrace(); 

     } 
+0

попытка ниже метод –

ответ

0

попробовать ниже метод @ Химмат

public void addReminder() { 
     Intent calIntent = new Intent(Intent.ACTION_EDIT); 
     calIntent.setData(CalendarContract.Events.CONTENT_URI); 
     calIntent.setType("vnd.android.cursor.item/event"); 
     calIntent.putExtra(CalendarContract.Events.TITLE, e.getName()); 
     calIntent.putExtra(CalendarContract.Events.EVENT_LOCATION, e.getLocation()); 
     calIntent.putExtra(CalendarContract.Events.DESCRIPTION, e.getDescription()); 
     Calendar calStart=Calendar.getInstance(); 
     if(Validator.isNotNull(e.getStartDate())) { 
      calStart.setTime(e.getStartDate()); 
     } 
     calIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, 
       calStart.getTimeInMillis()); 
     Calendar calEnd=Calendar.getInstance(); 
     if(Validator.isNotNull(e.getEndDate())) { 
      calEnd.setTime(e.getEndDate()); 
     } 
     calIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, 
       calEnd.getTimeInMillis()); 
     calIntent.putExtra(CalendarContract.EXTRA_CUSTOM_APP_URI, 
       e.getRegistrationLink()); 
     startActivity(calIntent); 
    } 
+0

Привет, этот метод откроет намерения для добавления события. Вопрос о том, чтобы добавить событие прогамматически через сам код, не открывая намерения. –

+0

@ Himmat см. Http://stackoverflow.com/questions/5976098/how-to-set-a-reminder-in-android sanjeev kumar's answer –

+0

Я уже пробовал всех их братьев. Проблема заключалась в том, что код, который я написал выше, - это то, что для устройств Android M нет идентификатора calendarID. В результате не создается событие, и вместо него создается уведомление о дне рождения. Так что проблема в моем коде, в частности, для устройств Android M –

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

  • Нет связанных вопросов^_^