Capabilities
Capabilities are the device features your app is allowed to use. Studio's
capabilities form writes the same blocks you would otherwise hand-write in
waid.config.json, so Capabilities is the
reference for what each one grants.
Everything defaults to off. You add a group, then turn on the specific toggles inside it.
Groups#
| Group | What it covers | Platforms |
|---|---|---|
| Host functions | Native APIs exposed as window.host.*: files, shell, vault, auth, actions, intents, push, events, MCP, consent | Desktop, Android |
| Media | Audio and video playback, camera and microphone capture | Desktop, Android, iOS |
| Photos | Read the device photo library | Android |
| Storage | File access beyond the app's own directories | Android |
| Contacts | Read and write the address book | Android |
| Telephony | Place calls, read call state, act as the default dialer | Android |
| Messaging | Send, read and receive SMS, act as the default SMS app | Android |
| Launcher | Act as the home screen, list and manage installed apps | Android |
| Alarms | Schedule work that wakes the device | Android |
Each toggle names the OS permission it maps to, so you can see what you are actually asking the user for.
Two capabilities get extra attention in store review. All files access
(Android MANAGE_EXTERNAL_STORAGE) is reviewed closely by Google Play, and
Place calls (CALL_PHONE) dials without showing the dialer. Turn them on
when your app needs them, and be ready to explain why in your store listing.
Auto-detection#
Studio can scan your project's source and suggest the capabilities it finds evidence for. Each suggestion shows why, with the file and line where it was found.
A capability is suggested only when your source clearly uses it, so you are never asked to request a permission your app doesn't need. Photos, storage, contacts, telephony, messaging, launcher and alarms can't be detected reliably from web code, so turn those on yourself when your app needs them.
Dismiss a suggestion and Studio won't offer it again.