[Request] True zero-interaction background updates during sync on Android 12+ (Session installer)

Open
#1,434 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
52/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
android, kotlin
Domain
mobile-dev

Research direction

Start with SyncWorker and the Settings > Sync & Updates flow, then inspect the app manifest for installer permissions. The feature needs an opt-in setting, Android 12+ installer-of-record and user-action checks, and a fallback notification path. It is done when Droid-ify-installed apps can update silently during sync while apps requiring user action still produce a standard notification.

Written by the indexing model from the issue text.

Description

enhancement
Guidelines
  • I have searched the issue tracker for open and closed issues that are similar to the feature request I want to file, without success.
  • I'm not requesting app support for a specific repo — that's up to repo maintainers
  • I understand this might not get built (Droid-ify is maintained by a single person)
Problem

Right now, when using the Session installer on Android 12+, background updates are only semi-automatic: Droid-ify syncs in the background and posts a notification, but I still have to open the app and tap "Update all" to actually download and install them.

On GrapheneOS (where short auto-reboot timers make ADB/Root workarounds impractical), it would be great to have true "set and forget" background updates out of the box—just like the official F-Droid client, Neo Store, and Obtainium do.

Proposed solution

Add an option in Settings -> Sync & Updates to automatically download and install updates in the background during the sync job.

Since Android 12+ (API 31+) allows the original installer of an app to update it silently without user prompts, Droid-ify can do this natively during SyncWorker for any app it originally installed:

  • Declare <uses-permission android:name="android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION" /> in the Manifest.
  • Check if Droid-ify is the installer of record (getInstallSourceInfo), and if so, use setRequireUserAction(USER_ACTION_NOT_REQUIRED) on the SessionParams to commit the update silently in the background.
  • If an app was installed by another source (or requires user action), just fall back to a standard notification instead of failing/crashing.
Extras
Benefits
  • True "Set and Forget" UX: Matches the zero-interaction background update experience of the official F-Droid client, Neo Store, and Obtainium.
  • No Root / No Shizuku needed: Works out of the box on stock Android 12+ and GrapheneOS across reboots.
  • Minimal cognitive load: Users only get a passive notification "3 apps updated in the background" (or nothing at all, if configured), keeping Droid-ify's clean Material You philosophy.

Related to #1275, #1273, #900, and #1158.

Dominant language
Kotlin
Stars
7.7k
Forks
233
PR merge metrics
No merged PRs in 30d

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Droid-ify/client

All issues in Droid-ify/client

Similar issues

More Kotlin issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.