Skip to content

Add immichframe://open deep link so the app can be opened by URL - #67

Merged
3rob3 merged 1 commit into
immichFrame:mainfrom
Zaida-3dO:feat/deep-link-open
Nov 5, 2026
Merged

3rob3 merged 1 commit into
immichFrame:mainfrom
Zaida-3dO:feat/deep-link-open

Conversation

@Zaida-3dO

@Zaida-3dO Zaida-3dO commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

Since a recent Play Store update, Android TV's remote protocol (what Home Assistant's Android TV Remote integration uses) rejects market://launch?id=... links, so it can no longer open apps by package name. Custom-scheme links still work (for example vnd.youtube:// opens SmartTube), but ImmichFrame has no VIEW intent-filter, so there is no way to open it remotely without ADB.

This adds:

  • an immichframe://open VIEW intent-filter on MainActivity
  • launchMode="singleTask" on MainActivity, so opening the link while the frame is already running brings the existing instance forward instead of starting a second copy (and a second RPC server) on top. The wake alarm already starts MainActivity with FLAG_ACTIVITY_REORDER_TO_FRONT, and onResume already re-checks the schedule, so no onNewIntent handling was needed.
  • a short README note on launching it from Home Assistant

Tested on a Google TV Streamer (Google TV 14), using a debug build installed next to the Play Store app:

  • adb shell am start -a android.intent.action.VIEW -d immichframe://open opened MainActivity.
  • Sending it again while it was running reported "intent has been delivered to currently running top-most instance", and dumpsys activity activities showed a single MainActivity instance.
  • Home Assistant remote.turn_on with activity: immichframe://open on the Android TV Remote entity returned 200 and opened the app on the TV, with the Play Store build force-stopped first.

One side effect of singleTask: opening the link while a settings screen is on top closes it and goes back to the frame.

Summary by CodeRabbit

  • New Features
    • Open ImmichFrame Android directly with the immichframe://open link. If the app is already running, the link brings it to the foreground.
    • Launch the app using this link from Home Assistant’s Android TV Remote integration or from a computer with ADB.
  • Documentation
    • Added instructions and examples for using the link.

@coderabbitai

coderabbitai Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 3f4a8140-72b9-4fb2-ba42-4be2a023fef1
📥 Commits

Reviewing files that changed from the base of the PR and between 3dcf08d and c9e72fb.

📒 Files selected for processing: 2
  • README.md
  • app/src/main/AndroidManifest.xml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📝 Walkthrough

MainActivity now accepts the immichframe://open link and uses singleTask launch mode. The README documents how to launch the app with the link from Home Assistant or ADB.

Changes: Android deep-link launch

Layer / File(s) Summary
Configure and document the launch link
app/src/main/AndroidManifest.xml, README.md
MainActivity uses singleTask launch mode and handles browsable VIEW intents for immichframe://open. The README shows launch examples for Home Assistant and ADB.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Feature

Merge Risk: ⚪ Minimal · up to c9e72

The documented custom link is intended to open ImmichFrame and bring its existing task forward; supplied checks report that behavior working, with no actionable merge risk evident.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: adding the immichframe://open deep link for opening the app by URL.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@3rob3

3rob3 commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Sorry, didn't see a notification for this. This looks good and also fixes #71 . Thanks for the contribution!

@3rob3
3rob3 merged commit 43f7dad into immichFrame:main Nov 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants