privacy: drop unused Health Connect WRITE_STEPS / WRITE_ACTIVE_CALORIES perms - #668
Merged
Merged
Conversation
…ES perms (#659) The manifest declared Health Connect write permissions for steps and active calories, but NOOP deliberately never writes those types back (they'd double- count the phone/watch's authoritative daily totals — HealthConnectWriter.kt:115, #528; iOS #249 aligns). The runtime request is built from WRITE_RECORDS, which never included StepsRecord/ActiveCaloriesBurnedRecord, so these two declarations were pure dead privacy surface — declared but never requested or used. Removes both <uses-permission> lines and rewrites the stale comment (which still claimed 'steps, active energy … writeback') to document WHY they're intentionally absent, so a future contributor doesn't re-add them. Manifest-only, no behaviour change (HC grants only what's both declared AND requested; the runtime never requested these). compileFullDebugKotlin green; manifest processes clean.
DX23876
pushed a commit
to DX23876/noop
that referenced
this pull request
Jul 22, 2026
…ES perms (ryanbr#659) (ryanbr#668) The manifest declared Health Connect write permissions for steps and active calories, but NOOP deliberately never writes those types back (they'd double- count the phone/watch's authoritative daily totals — HealthConnectWriter.kt:115, ryanbr#528; iOS ryanbr#249 aligns). The runtime request is built from WRITE_RECORDS, which never included StepsRecord/ActiveCaloriesBurnedRecord, so these two declarations were pure dead privacy surface — declared but never requested or used. Removes both <uses-permission> lines and rewrites the stale comment (which still claimed 'steps, active energy … writeback') to document WHY they're intentionally absent, so a future contributor doesn't re-add them. Manifest-only, no behaviour change (HC grants only what's both declared AND requested; the runtime never requested these). compileFullDebugKotlin green; manifest processes clean.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #659.
The Android manifest declared Health Connect write permissions for steps and active calories, but NOOP deliberately never writes those types back — they'd double-count the phone/watch's authoritative daily totals (
HealthConnectWriter.kt:115, #528; iOS #249 aligns). And the runtime request is built fromWRITE_RECORDS= {RestingHR, HRV, OxygenSat, RespRate, HeartRate, SleepSession} (+ a separate Exercise/Distance group) — neither list includesStepsRecord/ActiveCaloriesBurnedRecord. So the two declarations were pure dead privacy surface: declared but never requested or used.Change (manifest-only)
WRITE_STEPS+WRITE_ACTIVE_CALORIES_BURNED<uses-permission>.Why it's safe
Health Connect grants a permission only when it's both declared and requested at runtime. The runtime never requested these, so removing the declarations changes no behaviour — it only shrinks the declared privacy surface and makes the permission prompt honest.
Verification
./gradlew compileFullDebugKotlin✓ (manifest processes clean).No iOS change — iOS already excludes these (#249).