2015-02-20 2 views
1

Я пытаюсь вставить новое событие в календарь по умолчанию. До сих пор я пытался два метода:Добавление события в Android по умолчанию Календарь автоматически

1. Добавление события календаря (но не отображается на Default Calendar App)

код используется somekind как ниже

  ContentValues event = new ContentValues(); 
      event.put(CalendarContract.Events.CALENDAR_ID, calID); 
      event.put(CalendarContract.Events.TITLE, appointment.mTitle); 
      event.put(CalendarContract.Events.DESCRIPTION, appointment.mDescription); 
      event.put(CalendarContract.Events.EVENT_LOCATION, appointment.mAddress); 

      event.put(CalendarContract.Events.DTSTART, appointment.mStartTime); 
      event.put(CalendarContract.Events.DTEND, appointment.mEndTime); 
      event.put(CalendarContract.Events.ALL_DAY, 0); // 0 for false, 1 for true 
      event.put("eventStatus", 1); // 0 for tentative, 1 for confirmed, 2 for canceled 
      event.put(CalendarContract.Events.HAS_ALARM, 1); // 0 for false, 1 for true 
      event.put(CalendarContract.Events.EVENT_TIMEZONE, TZone.getJavaTimeZoneId(appointment.mTZone)); 
Uri url = getContentResolver().insert(eventUri, event); 

2. Использование Намерение, которое открывает приложение Calendar

Несмотря на то, что это открытие приложения для календарей, но оно не сохранялось автоматически. пользователь должен нажать кнопку «Сохранить», чтобы сохранить его.

  Intent intent = new Intent(Intent.ACTION_INSERT) 
        .setData(Events.CONTENT_URI) 
        .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, appointment.getStartOfCompleteDateAndTimeOfEvent()) 
        .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, appointment.getEndOfCompleteDateAndTimeOfEvent()) 
        .putExtra(Events.TITLE, appointment.mTitle) 
        .putExtra(Events.DESCRIPTION, appointment.mDescription) 
        .putExtra(Events.EVENT_LOCATION, appointment.mAddress) 
        ; 
      startActivity(intent); 

То, что я на самом деле хочу сделать это, чтобы объединить эти два метода, которые, чтобы произвести автоматическую вставку события календаря в календарь приложения и если событие календаря открыть, событие уже хранятся и могут быть просмотрены через приложение по умолчанию для календарей.

Если кто-нибудь знает, пожалуйста, помогите. Большое спасибо.

+0

Установили ли вы права на файл манифеста для записи в календарь? https://developer.android.com/guide/topics/providers/calendar-provider.html#manifest –

+0

Я сделал. событие календаря фактически сохранено, но я не вижу его в приложении календаря. – yodann

ответ

1
private void insertEntry(String pTitle, String pDescription, String pLocation, long pStartTimestamp, long pEndTimestamp) { 
    ContentValues values = new ContentValues(); 
    ContentResolver mContentResolver = mContext.getContentResolver(); 
    values.put(Events.CALENDAR_ID, mCalendarID); 
    values.put(Events.TITLE, pTitle); 
    values.put(Events.DESCRIPTION, pDescription); 
    values.put(Events.EVENT_LOCATION, pLocation); 
    values.put(Events.DTSTART, pStartTimestamp); 
    values.put(Events.DTEND, pEndTimestamp); 
    values.put(Events.HAS_ALARM, 1); // 0 for false, 1 for true 
    values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getDisplayName()); //get the Timezone 
    Uri uri = mContentResolver.insert(Events.CONTENT_URI, values); 
    Log.i(TAG,"calendar entry inserted"); 
} 

Этот код работает для меня.

Вы должны убедиться, что ваше приложение имеет разрешение на чтение и запись для календаря. Просто добавьте это в свой манифест:

<uses-permission android:name="android.permission.READ_CALENDAR" /> 
<uses-permission android:name="android.permission.WRITE_CALENDAR" /> 
+0

Я проверяю свой календарь, но событие не отображается. Я хочу, чтобы приложение календаря синхронизировалось с моим приложением, поэтому любые события, сохраненные в приложении, будут показаны в приложении календаря. – yodann

+0

Вот что я делаю и в своем приложении. – carstenbaumhoegger

+0

Я отредактировал свой ответ, чтобы показать вам мой полный код вставки :) – carstenbaumhoegger

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