android-location-serviceslisted
Install: claude install-skill rajedev/AIWeatherApp
# Android Location Services: Request, Fetch, Resolve, Degrade
Location is almost never the *only* way into a feature — it's one convenience path alongside a manual alternative (search, saved list, typed address). Every location feature in this skill's scope should be designed so the manual path works with zero location permission granted, ever. Location makes the app faster/more convenient; it should never be a hard dependency for core functionality.
## Core mental model
```
Cold start / feature entry point
│
▼
Explicit choice: "Use current location" vs. manual alternative
│ (never auto-fire the permission dialog on app launch)
▼
User taps "Use current location"
│
▼
checkSelfPermission() ── re-checked EVERY time, never cached as app state
│
├── not granted → request → user denies → land on manual path
│ → user grants → continue below
│
▼
One-shot getCurrentLocation() (suspend, not a continuous stream)
│
├── fails (GPS off / no fix / timeout) → inline error: Retry / Use manual path
│ (show any cached prior result underneath, don't blank the screen)
│
▼
Reverse geocode lat/lon → place name (with fallback chain, see below)
│
▼
Feed resolved place into the same data path manual entry would have used
(one downstream code path regardless of how the place was