fix: open existing events from external VIEW intents (#48)
All checks were successful
CI / ci (pull_request) Successful in 10m20s
All checks were successful
CI / ci (pull_request) Successful in 10m20s
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>
This commit is contained in:
@@ -123,6 +123,22 @@
|
||||
<data android:mimeType="vnd.android.cursor.dir/event" />
|
||||
</intent-filter>
|
||||
|
||||
<!-- Open an existing event another app/widget points at (e.g. tapping
|
||||
an event in the Todo Agenda widget): ACTION_VIEW on
|
||||
content://com.android.calendar/events/<id>, the way AOSP fires it.
|
||||
Matched by the provider's item MIME type, not the path — a
|
||||
content: VIEW intent carries the resolved type
|
||||
(vnd.android.cursor.item/event) and a path-only filter wouldn't
|
||||
match it. The occurrence's times ride as EXTRA_EVENT_BEGIN_TIME /
|
||||
EXTRA_EVENT_END_TIME when the launcher supplies them
|
||||
(MainActivity.viewEventKeyOrNull, issue #48). -->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:mimeType="vnd.android.cursor.item/event" />
|
||||
</intent-filter>
|
||||
|
||||
<!-- Launcher long-press shortcuts (e.g. "New event"). -->
|
||||
<meta-data
|
||||
android:name="android.app.shortcuts"
|
||||
|
||||
Reference in New Issue
Block a user