Skip to content

Android v0.11.3 APK blocked by Google Play Protect on Galaxy S24 Ultra #637

Open

Description

@BarqueroJose

What happened?

The official openstrap-edge-v0.11.3.apk from GitHub Releases cannot be installed on a Samsung Galaxy S24 Ultra. Google Play Protect blocks it before installation with this message (Spanish locale):

Se bloqueó la app para proteger tu dispositivo
Esta app puede solicitar acceso a datos sensibles. Esto puede aumentar el riesgo de robo de identidad o fraude financiero.

The dialog only offers “Entendido” (“Got it”). Expected: the official Android APK installs, or the release documentation provides a supported path.

Possible cause to investigate: Google documents this exact warning for browser-downloaded APKs that declare sensitive capabilities, including notification listener access. The v0.11.3 manifest declares notification.listener.service.NotificationListener with android.permission.BIND_NOTIFICATION_LISTENER_SERVICE. This is a hypothesis from the warning and source, not a confirmed diagnosis of the built APK. Could you confirm the cause and consider a release without the optional notification relay, or an appeal to Google Play Protect?

Steps to reproduce

  1. On a Samsung Galaxy S24 Ultra, download openstrap-edge-v0.11.3.apk from https://github.com/OpenStrap/edge/releases/tag/v0.11.3.
  2. Open the downloaded APK from Downloads.
  3. Google Play Protect shows the sensitive-data warning and blocks installation.

The app never opens, so pairing with the WHOOP band is not reached.

App version

v0.11.3

Platform

Android (APK)

Phone model and OS version

Samsung Galaxy S24 Ultra; Android / One UI version not recorded

Which band?

WHOOP 4.0

Screenshots

No response

Quick checks

  • The official WHOOP app is not also connected to this band
  • I've searched existing issues for this

Activity

  1. Riedel-David commented on Oct 27, 2026

    @Riedel-David
    Contributor

    Hey here is what I found.

    Likely cause. Your hypothesis looks plausible. The NotificationListener service in the manifest isn't declared by the app itself. It's merged in by the notification_listener_service plugin, which is only used by lib/notify/notification_relay.dart. That's the optional feature that relays phone notifications to the band as a buzz. Google lists notification-listener access among the capabilities that can trigger this "may request access to sensitive data" block for APKs downloaded outside the Play Store. I haven't checked this against the built APK, so it's still unconfirmed.

    What doesn't fit yet. The same APK installs on my Galaxy S25. I only have to dismiss or turn off the usual Play Protect and "unknown source" prompts, as with any sideloaded app. Your dialog only offers "Entendido". That points to something specific to your device or region. Google has rolled this stricter block out by country and Android version, and Samsung's Auto Blocker can also stop sideloaded installs entirely.

    Could you check these?

    1. Your Android and One UI versions.
    2. Whether Samsung Auto Blocker is on (Settings → Security and privacy → Auto Blocker). If it is, turn it off for the install.
    3. Whether the install goes through once Device Protection is off (Play Store → profile icon → Play Protect → settings → "Scan apps with Play Protect" → Advanced Protection). You can turn it back on afterwards.
    4. Whether you downloaded the APK in a browser or through a file manager.

    If the listener service does turn out to be the trigger, a release without the notification relay, or a documented install path, would be a question for the maintainers.

  2. BarqueroJose commented on Oct 28, 2026

    @BarqueroJose
    Author

    Additional device details: Galaxy S24 Ultra running Android 16 and One UI 8.5. The v0.11.3 APK was downloaded from the official GitHub release in Chrome, then opened from Downloads. Samsung Auto Blocker is off; the Google Play Protect block still occurs.

  3. kurexw commented on Nov 13, 2026

    @kurexw

    Some details for deciding this, from current main:

    • The NotificationListener service is declared in the app's own android/app/src/main/AndroidManifest.xml (around line 256, with BIND_NOTIFICATION_LISTENER_SERVICE), not merged in by the plugin. Its only user is the optional "buzz the band for phone notifications" relay (lib/notify/notification_relay.dart), which does nothing until the user grants Notification access.
    • build.yml produces exactly one Android APK, so whatever the release APK declares, every Android user gets.
    • Riedel-David's S25 installs the same APK, and the reporter has Auto Blocker off, which fits Google's stricter block being rolled out by region and Android version rather than the APK being refused everywhere. The cause is still unconfirmed on the built APK.

    Options, cheapest first:

    1. Confirm before deciding. Build one APK with the service removed (tools:node="remove" on that entry, nothing else changed) and ask @BarqueroJose to try installing it. If it installs, the listener is the trigger; if not, it's something else and the options below don't apply.
    2. Document a path, change nothing. A README / release-notes note on what to do when Play Protect blocks the install (e.g. temporarily turning off "Scan apps with Play Protect", or installing over ADB). Keeps the relay, but the users hit by this are exactly the ones least likely to get past it.
    3. Drop the relay from the GitHub APK. Remove the service declaration and the plugin from the release build. Simplest and fixes the block (if confirmed), but every Android user loses notification buzzes.
    4. Two APKs per release. The default APK without the listener, plus a "full" APK that keeps the relay, for people who want it and can get past Play Protect. Keeps the feature but adds a build variant and a second artifact to every release.

    My suggestion would be 1, then 4 if the relay matters to enough people or 3 if it doesn't. @abdulsaheel, which way would you want this to go? I'm happy to do the test build for option 1, and whichever change follows.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions