feat(intents): open .ics/.vcs handed over as application/octet-stream (#74)
Mail clients, browsers and file managers frequently label a calendar attachment as a generic download (application/octet-stream) rather than text/calendar, so the MIME-typed VIEW filter missed them. Add a dedicated filter that matches those by .ics/.vcs extension via pathPattern — kept separate so the path constraint can't narrow the reliable MIME-typed filter. The import handler already ignores the declared MIME, so a let-through file imports normally. Best-effort: reliable for file:// and content:// whose path carries the name; nameless content:// URIs still fall back to the MIME filter. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -38,6 +38,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
didn't advertise — so it was left out of the chooser, and if it was your only
|
didn't advertise — so it was left out of the chooser, and if it was your only
|
||||||
calendar app the save silently did nothing. It now accepts that form, plus the
|
calendar app the save silently did nothing. It now accepts that form, plus the
|
||||||
`INSERT_OR_EDIT` action, and opens the new event prefilled for review ([#74]).
|
`INSERT_OR_EDIT` action, and opens the new event prefilled for review ([#74]).
|
||||||
|
- Opening a `.ics`/`.vcs` file now works even when another app hands it over
|
||||||
|
mislabelled as a generic download (`application/octet-stream`), as some mail
|
||||||
|
clients, browsers and file managers do — Calendula recognises it by its file
|
||||||
|
extension instead of relying on the declared type ([#74]).
|
||||||
|
|
||||||
## [2.16.0] — 2026-07-17
|
## [2.16.0] — 2026-07-17
|
||||||
|
|
||||||
|
|||||||
@@ -112,6 +112,28 @@
|
|||||||
<data android:mimeType="text/x-vcalendar" />
|
<data android:mimeType="text/x-vcalendar" />
|
||||||
<data android:mimeType="application/ics" />
|
<data android:mimeType="application/ics" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
<!-- Same .ics/.vcs data arriving mislabelled as a generic download —
|
||||||
|
application/octet-stream — the way many mail clients, browsers and
|
||||||
|
file managers hand off attachments. Matched by file extension, so
|
||||||
|
this stays a separate filter: a pathPattern here must not narrow
|
||||||
|
the MIME-typed VIEW filter above (that one has no path and must
|
||||||
|
keep matching regardless of name). The import handler ignores the
|
||||||
|
MIME type, so a let-through octet-stream .ics imports normally.
|
||||||
|
Best-effort: pathPattern is reliable for file:// (and content://
|
||||||
|
whose path carries the filename); content:// URIs that expose no
|
||||||
|
name still fall back to the MIME-typed filter above. -->
|
||||||
|
<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:scheme="content" />
|
||||||
|
<data android:scheme="file" />
|
||||||
|
<data android:host="*" />
|
||||||
|
<data android:mimeType="application/octet-stream" />
|
||||||
|
<data android:pathPattern=".*\\.ics" />
|
||||||
|
<data android:pathPattern=".*\\.vcs" />
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
<!-- Receive a .ics/.vcs shared from another app (same MIME set). -->
|
<!-- Receive a .ics/.vcs shared from another app (same MIME set). -->
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.SEND" />
|
<action android:name="android.intent.action.SEND" />
|
||||||
|
|||||||
Reference in New Issue
Block a user