Ошибка при вставке события в календарь с намерением - PullRequest
2 голосов
/ 29 марта 2012

Я пытаюсь вставить события в calendar из фрагмента, но продолжаю получать сообщение об ошибке, что не найдено никаких действий для обработки Намерения.

Вот ошибка -

android.content.ActivityNotFoundException: не найдена активность для обработки Intent {act = android.intent.action.INSERT )}

Вот мой код:

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> 
<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>

Ответы [ 4 ]

13 голосов
/ 26 июля 2012

Я использовал Intent intent = new Intent (Intent.ACTION_EDIT);и это, казалось, решило проблему

1 голос
/ 18 июля 2017

Приложение Calender может быть не установлено на некоторых устройствах. Так что вложите в блок try catch для проверки.

Calendar startTymVar = Calendar.getInstance();
startTymVar.set(2015, 12, 31, 11, 30);

Intent calendarIntentVar = new Intent(Intent.ACTION_INSERT)
            .setData(CalendarContract.Events.CONTENT_URI)
            .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, startTymVar.getTimeInMillis())
            .putExtra(CalendarContract.Events.TITLE, "New Year")
            .putExtra(CalendarContract.Events.DESCRIPTION, "Hav ful fun");

try
{
    startActivity(calendarIntentVar);
}
catch (ActivityNotFoundException ErrVar)
{
    Toast.makeText(this, "Install Calender App", Toast.LENGTH_LONG).show();
}
0 голосов
/ 17 декабря 2018

Проверьте, есть ли какие-либо действия, которые разрешают это намерение

if (intent.resolveActivity(getPackageManager()) == null) {
}
0 голосов
/ 29 марта 2012

если вы уже знаете информацию, которая выглядит так, как будто вам не нужно запускать приложение календаря, просто вставьте событие в базу данных см. Добавление событий

Также ищитев документах APP_CALENDAR используется только с ACTION_MAIN, а не ACTION_INSERT

...