Skip to content

Request approximate location only (drop ACCESS_FINE_LOCATION) - #85

Merged
timbortnik merged 1 commit into
mainfrom
fix/coarse-location-only
Nov 8, 2026
Merged

timbortnik merged 1 commit into
mainfrom
fix/coarse-location-only

Conversation

@timbortnik

Copy link
Copy Markdown
Owner

Google Play's minimum-scope location policy (effective 2027-01-27, all apps regardless of targetSdk) allows ACCESS_FINE_LOCATION only when neither the location button nor ACCESS_COARSE_LOCATION can support the feature. A weather forecast works on approximate location - Play's own guidance names "regional weather" as a coarse use case - so request coarse only. This also avoids the precise-location Play declaration.

  • Manifest: remove ACCESS_FINE_LOCATION.
  • MainActivity: request only ACCESS_COARSE_LOCATION, and base the "deniedForever" check on it; checking the now-undeclared fine permission would report every ordinary denial as deniedForever.
  • LocationProvider: permission check looks at coarse only.
  • SECURITY.md: update the permission list.
  • PRIVACY_POLICY.md: "device's GPS" -> "device's location services", heading matches the in-app "Current location"; bump both dates as the policy's change clause requires. "Approximate" is deliberately not claimed yet: builds that request precise location stay in use until this release fully replaces them.

Android 12+ users who picked "Approximate" already run this coarse-only path. Verified: make analyze, make test (Dart + Kotlin), debug build, :app:lintDebug; merged manifest's only location permission is now ACCESS_COARSE_LOCATION.

Google Play's minimum-scope location policy (effective 2027-01-27, all
apps regardless of targetSdk) allows ACCESS_FINE_LOCATION only when
neither the location button nor ACCESS_COARSE_LOCATION can support the
feature. A weather forecast works on approximate location - Play's own
guidance names "regional weather" as a coarse use case - so request
coarse only. This also avoids the precise-location Play declaration.

- Manifest: remove ACCESS_FINE_LOCATION.
- MainActivity: request only ACCESS_COARSE_LOCATION, and base the
  "deniedForever" check on it; checking the now-undeclared fine
  permission would report every ordinary denial as deniedForever.
- LocationProvider: permission check looks at coarse only.
- SECURITY.md: update the permission list.
- PRIVACY_POLICY.md: "device's GPS" -> "device's location services",
  heading matches the in-app "Current location"; bump both dates as the
  policy's change clause requires. "Approximate" is deliberately not
  claimed yet: builds that request precise location stay in use until
  this release fully replaces them.

Android 12+ users who picked "Approximate" already run this coarse-only
path. Verified: make analyze, make test (Dart + Kotlin), debug build,
:app:lintDebug; merged manifest's only location permission is now
ACCESS_COARSE_LOCATION.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 0 complexity · 0 duplication

Metric Results
Complexity 0
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@timbortnik
timbortnik merged commit bb0a6ea into main Nov 8, 2026
5 of 6 checks passed

This branch was successfully deployed

No deployments
production — ab702d59 Deployed Nov 8, 2026 by timbortnik via build #41
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.

1 participant