Skip to content

feat(mobile): Android. Immich as a gallery / image viewer app#26109

Open
PeterOmbodi wants to merge 10 commits intoimmich-app:mainfrom
PeterOmbodi:feature/gallery_app
Open

feat(mobile): Android. Immich as a gallery / image viewer app#26109
PeterOmbodi wants to merge 10 commits intoimmich-app:mainfrom
PeterOmbodi:feature/gallery_app

Conversation

@PeterOmbodi
Copy link
Contributor

@PeterOmbodi PeterOmbodi commented Feb 10, 2026

Description

Make Immich available as a gallery / image viewer app (open images from other apps)
Enable Android ACTION_VIEW integration so Immich can open images/videos from external apps, resolve to existing local assets when possible, and show them in the native Immich asset viewer experience.

Discussions:
#1605

How Has This Been Tested?

On an Android device:

  1. Install and launch the Immich mobile app at least once (to ensure the app is initialized).
  2. Open any external app that can view media (e.g., a file manager).
  3. Select an image or video and choose Open with…Immich (optionally set Immich as the default).
  4. Verify that Immich opens and displays the selected asset.

Resolution behavior:

  • Case A - asset is already indexed by Immich:
    Open a media file that is already present in Immich (for example, from a backed-up folder).
    Verify that the asset opens in the regular Immich viewer with the same controls as when opened from the timeline.

  • Case B - asset is not indexed by Immich:
    Open a media file that is not present in Immich’s local index.
    Verify that Immich shows a preview with an Upload to Immich action available.
    After uploading, verify that the asset appears in the Immich timeline and opens with the full viewer controls.

  • Case С - asset cannot be resolved:
    Open a media file for which a Media ID cannot be resolved.
    Verify that Immich shows a basic preview with limited controls (view-only fallback).

Tested using:

  • ACTION_VIEW intents from external apps (file managers)
  • Multiple Android devices (behavior may vary slightly by manufacturer)

Screenshots

image image
Screen_recording_20260210_182217.mp4

Checklist:

  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation if applicable
  • I have no unrelated changes in the PR.
  • I have confirmed that any new dependencies are strictly necessary.
  • I have written tests for new code (if applicable)
  • I have followed naming conventions/patterns in the surrounding code
  • All code in src/services/ uses repositories implementations for database calls, filesystem operations, etc.
  • All code in src/repositories/ is pretty basic/simple and does not have any immich specific logic (that belongs in src/services/)
    ...

Peter Ombodi added 6 commits February 5, 2026 18:54
- add ViewIntent Pigeon API and generated bindings
- implement Android ViewIntentPlugin + iOS no-op host
- route ExternalMediaViewer by ViewIntentAttachment
- buffer pending view intents and flush on user ready/resume
# Conflicts:
#	mobile/android/app/src/main/kotlin/app/alextran/immich/MainActivity.kt
#	mobile/ios/Runner/AppDelegate.swift
#	mobile/makefile
- hash local asset on-demand when checksum missing
- search main timeline by localId or checksum before standalone viewer
- persist computed hash into local_asset_entity
@PeterOmbodi PeterOmbodi marked this pull request as draft February 10, 2026 16:06
@alextran1502
Copy link
Member

woo, exciting!

@PeterOmbodi PeterOmbodi marked this pull request as ready for review February 10, 2026 16:38
@RebootFixesAll
Copy link

Can't wait for this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants