Follow-up to #30. v2.14.0 handles ACTION_INSERT (the widget "+"), but
tapping an existing event in a third-party widget (e.g. Todo Agenda) never
offered Calendula, because nothing handled ACTION_VIEW on
content://com.android.calendar/events/<id>.
- Manifest: add a VIEW intent-filter matched by the provider's item MIME
type (vnd.android.cursor.item/event), mirroring AOSP Calendar and the
sibling INSERT dir/event filter. A content: VIEW intent carries the
resolved type, so a path-only filter wouldn't match it.
- MainActivity.viewEventKeyOrNull: parse the events URI into the existing
occurrence detail-key channel (the one reminder taps use). Occurrence
times ride as EXTRA_EVENT_BEGIN_TIME/END_TIME when the launcher supplies
them; a bare URI omits them.
- EventDetailViewModel: a NO_OCCURRENCE_TIME sentinel makes loadDetail keep
the event row's own DTSTART/DTEND for a bare URI instead of overriding to
the epoch (would otherwise render at 1970).
Needs on-device verification (intent-filter matching + the widget's actual
extras).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>