I'm trying to insert events to the calendar
from a fragment, but I keep getting an error that no activity is found to handle Intent.
Here's the error -
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.INSERT cat=[android.intent.category.APP_CALENDAR] typ=vnd.android.cursor.item/event (has extras) }
Here's my code:
Intent intent = new Intent(Intent.ACTION_INSERT);
intent.addCategory(Intent.CATEGORY_APP_CALENDAR);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra(Events.TITLE, "Phototherapy Treatment");
intent.putExtra(Events.EVENT_LOCATION, "");
intent.putExtra(Events.DESCRIPTION, "Phototherapy Treatment");
// Setting dates
Calendar calDate = Calendar.getInstance();
intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,calDate.getTimeInMillis());
intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME,
calDate.getTimeInMillis()+60*60*1000);
// Make it a full day event
intent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, false);
// Make it a recurring Event
intent.putExtra(Events.RRULE, "FREQ=WEEKLY;COUNT="+Integer.valueOf(No.getText().toString())+";"
+"WKST=SU;BYDAY="+days);
// Making it private and shown as busy
intent.putExtra(Events.ACCESS_LEVEL, Events.ACCESS_PRIVATE);
intent.putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY);
startActivity(intent);
Intent Filter
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.INSERT" />
<category android:name="android.intent.category.APP_CALENDAR" />
<data android:mimeType="vnd.android.cursor.item/event" />
</intent-filter>
I used Intent intent = new Intent(Intent.ACTION_EDIT); and it seemed to resolve the issue
Calender App may not be installed in some devices. So enclose within try catch block to check.
if you already know the information which it looks like you do you do not need to launch the calendar app, simply just insert the event into the database see adding events
Also looking at the docs
APP_CALENDAR
is only used withACTION_MAIN
notACTION_INSERT
Check if there is any activity that resolves this intent