App permissions

On this page 7

App permissions are the access controls a mobile operating system enforces to decide whether an installed app may use sensitive data, hardware or system features, such as the camera, microphone, location, contacts, photos, notifications or nearby devices. In mobile fundamentals, they are the main mechanism through which the user, rather than the app developer, controls what an app can see and do on a smartphone.

Permissions sit on top of app sandboxing: every app runs in an isolated environment and can reach protected resources only through system interfaces that check whether access has been granted. Modern Android and iOS versions ask for most sensitive permissions at runtime, in context, and let users change or revoke them later in the system settings.

How app permissions work

An app permission works as a declared capability plus a user or system grant. The developer declares in the app’s manifest or configuration which protected resources it may need, and the operating system checks the current grant every time the app calls a protected interface.

  1. The developer declares the permission in the app package, for example in the Android manifest or the iOS Info.plist with a usage description.
  2. When the app first needs the resource, it requests access at runtime, ideally right after a user action that explains the need.
  3. The operating system shows a system-controlled permission dialog that the app cannot alter or fake.
  4. The user allows, limits or denies access, and the system stores the decision per app.
  5. On every later use, the system enforces the stored grant; a denied request simply fails or returns no data.
  6. The user can change the decision at any time in settings, and the system may revoke unused grants automatically.

Because the dialog belongs to the operating system, the app cannot grant itself access. It can only ask, explain and adapt when the answer is no, which makes graceful handling of denial a core part of good app design.

Permission categories and protection levels

Mobile platforms divide permissions by how much risk they pose to privacy and system integrity. Android expresses this explicitly as protection levels; iOS uses a similar distinction between capabilities granted silently and those requiring user consent.

CategoryExamplesHow access is granted
Install-time or normalInternet access, vibration, network stateGranted automatically at installation
Runtime or dangerousCamera, microphone, location, contactsUser consent through a system dialog
Special accessDisplay over other apps, exact alarms, accessibilityManual enabling in system settings
Signature or systemLow-level device and system functionsOnly apps signed by the platform or maker
Common permission categories

Recent platform versions also offer granular and temporary grants. These reduce how much data an app receives even when the user agrees to share something.

OptionWhat it limitsTypical use
Allow only while using the appAccess only when the app is in the foregroundNavigation and camera apps
Allow onceA single session; the grant expires afterwardOccasional location or microphone use
Approximate locationLocation within a wider area instead of a precise pointWeather and local content
Limited photo accessOnly photos the user selectsUploading a profile picture
Background locationAccess while the app is not visibleFitness tracking and geofencing, with extra review
Granular permission options on modern platforms

Android and iOS permission models compared

Both major mobile operating systems follow the same principle of runtime consent and sandboxing, but they differ in details that affect developers and users. The table summarizes the main differences.

AspectAndroidiOS
DeclarationPermissions listed in the manifestUsage description strings in Info.plist
Runtime promptsRequired for dangerous permissions since Android 6.0Required for privacy-sensitive resources
Repeated requestsFurther prompts blocked after repeated denialsPrompt shown once; later changes only in settings
Automatic revocationGrants removed from long-unused appsReminders and summaries for background location
Usage indicatorsStatus bar indicator for camera and microphoneColored indicator dots for camera and microphone
Permission handling on Android and iOS

The iOS one-time prompt makes timing especially important: if a user denies access in the first prompt, the app can only direct them to settings. On Android, repeated denials have a similar effect, so both platforms reward apps that ask only when the benefit is obvious.

Requesting permissions well

Good permission design follows the principle of least privilege: request the smallest set of permissions, at the narrowest scope, at the moment the user can see why. This improves grant rates, reduces privacy risk and eases app store review.

SituationRecommended approachReason
Feature used by a minority of usersAsk when the feature is openedAvoids prompts most users never need
Purpose not obvious from contextShow a short explanation screen firstRaises understanding before the system dialog
Only one file or photo neededUse the system picker insteadNo broad storage or photo permission required
Coarse location is enoughRequest approximate locationRespects privacy and passes review more easily
User denied accessKeep the app usable and offer a settings linkAvoids blocking or nagging
Permission request decisions

Requesting many permissions at first launch is a common anti-pattern. Users have no context, often deny everything, and may uninstall the app before it has delivered any value.

Limitations and common misconceptions

Permissions control access to resources, not what an app does with the data afterward. Once a user grants contact access, the app technically can read all contacts, so policy enforcement depends on app store rules, privacy laws and the developer’s own conduct.

  • Third-party SDKs inherit the app’s permissions, so an analytics or advertising library can use location the app was granted.
  • Denying a permission does not always stop data inference; network information and sensors can still reveal some context.
  • Special access permissions, such as accessibility services, are powerful and frequently abused by malicious apps.
  • Granted is not permanent: apps must check permissions on every use because users and the system can revoke them.
  • Permission lists in app stores describe capability, not actual behavior, and are only a partial view of privacy.

For developers, the key takeaway is that every protected call can fail. Code must handle denial, revocation and limited grants as normal states rather than as rare errors.

A plain-language summary

App permissions are the questions your phone asks before an app can use something private, such as your camera, location or photos. You decide whether to say yes, no or only this time.

It is like giving a house key to a visitor: a delivery person may get access to the front porch, not the whole house. You stay in charge of what each app can reach, and you can take the key back at any time in the phone’s settings.

An example from practice

A small team built a mobile app for a local food delivery service. The first version asked for location, camera, contacts and notifications immediately after installation, and many new users denied all of them, which left the app unable to suggest nearby restaurants.

In the next release, the app requested approximate location only after the user tapped “find restaurants near me”, used the system photo picker for profile pictures instead of camera and storage access, dropped the contacts permission entirely and asked about notifications after the first order.

More users granted location in context, the app passed store review with fewer questions about data use, and support requests about “the app not working” declined. Asking less, and at the right moment, made the app both more private and more useful.