QRServ

dev.uint.qrserv
by Zapstore _@zapstore.dev

Republished from GitHub / F-Droid by the Zapstore main account.

QRServ takes any selected files on your device and makes them available through its own HTTP server at an unused port number. The selected files can then be downloaded via web browser on another device and/or software that allows file downloads over HTTP from QR codes. Devices involved would need to be on the same network (i.e. access point, tethering [no mobile data required], VPN [with a supported configuration]). - QR Code -- Tap to show the URL in a tooltip -- Press and hold to copy the URL to the clipboard - Share sheet -- Share the download URL via the system share sheet -- Import files via the system share sheet from other apps -- Sharing text with the app creates a text file to share - Shows live import progress, whether for a single file or multiple - Multi-file selection -- Bundled into a ZIP archive -- Press and hold the archive's filename to see the originally selected files in a tooltip - Direct Access Mode -- serves the file directly from storage instead of copying it into app cache first, ideal for large files -- Single file selection only -- To use this feature on Android 11 or later, use the GitHub version (link is in-app under the 'about' dialog and later on in the description) -- please note that the Play Store version needs to be uninstalled first as it would be signed using a different certificate -- Toggle-able in settings - Detects if the selected file is removed while being served, or modified (Direct Access Mode only) - Show or hide the filename in the download URL - Notifies when a client requests or finishes downloading the file, including their IP address - Resumes interrupted downloads in supported software - Choose which network interface's IP address to serve from -- the server only listens there unless set to listen on all interfaces - Switches to another IP address if the selected one disappears, and suggests better ones as they appear - Private hotspot (Android 13 or later) -- shares over a Wi-Fi network the app creates, reachable only by devices you let join -- Scan a Wi-Fi QR code to join, or enter the network name and password by hand -- Switch an ongoing share to or from the private hotspot without selecting the file again -- Chooses 5 GHz for faster transfers on Android 16 or later (not all devices support 5 GHz or choosing the band) - Keeps sharing while the app is in the background, with a notification to stop sharing - Stops sharing when idle (10 minutes by default, adjustable) - HTTP server binds to a random free port by default, or a user-configured one - In-app theme selection - Supports various languages: English, French, German, Hungarian, Italian, Polish, Portuguese, Spanish, Russian, Turkish, Persian, Hebrew Permission usage: - android.permission.INTERNET -- Collection of available network interfaces and port binding for the HTTP server - android.permission.READ_EXTERNAL_STORAGE -- Read-only access to emulated, physical SD card(s) and USB mass storage - android.permission.FOREGROUND_SERVICE and android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE -- Keeping the HTTP server (and private hotspot) running while the app is in the background - android.permission.POST_NOTIFICATIONS -- The ongoing notification shown while a file is being shared, with the option to stop sharing - android.permission.WAKE_LOCK -- Keeping the device awake while a download is in progress, so it isn't stalled by the screen turning off - android.permission.CHANGE_WIFI_STATE -- Creating and stopping the private hotspot - android.permission.NEARBY_WIFI_DEVICES -- Creating the private hotspot (Android 13 or later). Not used to find or locate devices - android.permission.ACCESS_WIFI_STATE -- Checking whether the device can host a hotspot while staying connected to Wi-Fi - android.permission.ACCESS_NETWORK_STATE -- Noticing when the device's IP addresses change while sharing, so the QR code can follow QRServ is open source. https://github.com/uintdev/qrserv

First release: Aug 16, 2025, 12 total releases.

Most recent release: Sep 28, 2026.

Repo

Appears in 3 app stacks.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Sep 28, 2026 4.2.1
    - System theme changes are now automatically detected and applied accordingly - General internal clean up
  • Sep 27, 2026 4.2.0
    - Added private hotspot sharing (Android 13 or later) - Sharing continues in the background, with a notification - Resumes interrupted downloads in supported software - Stops sharing when idle, after 10 minutes without downloads by default (adjustable in settings) - Server only listens on the selected IP address, unless set to listen on all interfaces - Warns when "Block connections without VPN" may block other devices - Switches IP address if it disappears, and suggests better ones - Links with a different file name now return 404 - Changing the language no longer clears the file selection - Fixed Hebrew language
    More…
    - Fixed handling of a port that's already in use - Refined import screen UI
  • Sep 21, 2026 4.1.0
    - IP addresses in the interface list are now grouped - Hooked up insufficient storage and interface lookup error pages - Content-Disposition file name is further sanitized - File content length validation improved - `content://` URI display name is now sanitized - Non-content URIs are now dropped - MiddleEllipsisText is now multi-byte aware - Cache is now cleared correctly when operations overlap - `Download finished` no longer fires on error - Use better random generator source
  • Sep 16, 2026 4.0.2
    - Internal cleanup to resolve a Play Store edge-to-edge compatibility warning - External storage path is now gathered dynamically - Fix Content-Disposition filename encoding (RFC 5987) - File size now calculates correctly when it comes to rounding - Deprioritize self-hosted IPs over excluding them from the interface list
  • Sep 13, 2026 4.0.1
    - UI improvements to header action buttons and the settings page view - Cache is now cleared on app launch - Settings can now be opened during file import - Fixed a couple race condition with the file observer - Fixed an issue where data shared via share sheet will not clear on server shutdown while DAM is enabled - Hardened checks against simultaneous imports - During file multi-selection archival, the archive file now gets removed if an error occurs
  • Sep 13, 2026 4.0.0
    - Rewritten in Kotlin and Jetpack Compose - Updated UI - Major performance, UX, and stability improvements - Landscape, tablet and foldable layout support - Live progress is now shown while importing single or multiple files - In-app theme picker - Restore default settings option now has a confirmation prompt - Direct Access Mode Browser now supports sorting by various file attributes and filtering by file name - Sharing text with the app via share sheet now results in a creation of a text file that can be shared - Unhandled exceptions (errors) are now displayed on a dedicated view with the option to share
    More…
    - Available once again on more architectures
  • Sep 5, 2026 3.1.2
    - Various dependency updates and migrations - General optimizations
  • Jul 5, 2026 3.1.1
    - Minimum supported SDK version to Flutter 3.44/Dart 3.12 - App is now ARM64 only (enforced) - General performance improvements - Preparations for Built-in Kotlin - Incremented target and compile SDK to 37 (Android 17)
  • Apr 14, 2026 3.0.6
    - Addressed an issue preventing reproducible builds -- '.note.gnu.build-id' is now removed from all native libraries automatically - NDK version bumped back to 29 -- there was a temporary bug limiting it to 28 in the previous release build - Improved file type icon logic
  • Apr 10, 2026 3.0.1
    - Resolved a potential path traversal vulnerability with the file picker - Edge-to-Edge now enforced on Android 12 to 14 (15 and later enforces it regardless) - Fixed Impeller (rendering runtime) bug where circles can be rendered as if they are aliased (jagged appearance)
  • Feb 25, 2026 3.0.0
    - Updated framework - Updated UI - New settings section - Port number is now user configurable - Improved overall performance - Minimum SDK version had been increased to 24 (Android 7), as per Flutter 3.35.0 requirements - Now using included framework functionality for System UI overlay styling (resolves API deprecations) - Fixed a couple cases of crashes (certain video files, file not found) when sharing file selection with app (#31) - Added build number to info dialog - Updated translations
    More…
    - Android builds are now ARM64-only - Loopback IP addresses now listed
  • Aug 16, 2025 2.7.6
    - Updated dependencies - Updated framework Note: the next release will increase the minimum Android version to 7 (SDK version 24) due to it being an enforced minimum SDK version starting from Flutter 3.35.0. This version will still be available on GitHub, should you need to use it on a version of Android from 2014 or 2015. Another note: it was discovered that from v2.7.1, the version code prefix was added back in. As of v2.7.6, the prefix was removed again but that means updates via package manager will be prevented due to being deemed as a downgrade. If it fails to update, uninstall the application and then install the latest version.