Request and handle runtime permissions correctly across iOS and Android
Scanned 9/3/2026
Install to Claude Code
npx -y skills add black141312/ada --skill mobile-permissions --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Mobile Permissions?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/black141312-mobile-permissions)More formats (shields.io, HTML) on the badges page.
---
name: mobile-permissions
description: Request and handle runtime permissions correctly across iOS and Android
category: mobile
---
# Mobile Permissions
Use this when a feature needs a sensitive capability (camera, location, mic, notifications, photos) and you must request, check, and gracefully handle the runtime permission.
1. Declare the permission up front: add it to `AndroidManifest.xml` and the matching `NSUsageDescription` (purpose string) keys in iOS `Info.plist` — both are required or the OS denies/rejects.
2. Check current status before requesting; if already granted, proceed without prompting again.
3. Request just-in-time, tied to the user action that needs it, and show a brief rationale first when the platform reports the user previously denied.
4. Handle every branch: granted, denied, and permanently-denied/"don't ask again" — for the last case route the user to system Settings.
5. Re-check status on screen resume (the user may have toggled it in Settings) and update the UI accordingly.
6. Gate the actual capability call behind a confirmed grant, and provide a degraded but functional fallback when denied.
## Rules
- Never request a permission at app launch with no context — request at the moment of use.
- A missing iOS usage-description string causes an immediate crash on request; always add the purpose key.
- Android 13+ needs runtime `POST_NOTIFICATIONS`; older targets don't — branch on API level.
- Treat permanent denial as terminal in-app: you cannot re-prompt, only deep-link to Settings.
- Request the narrowest scope that works (e.g. "while in use" location, not "always"); over-asking gets review rejections.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!