Manifest & Permissions

Android Dangerous Permissions: Build a Version-Aware Inventory

Android “dangerous” permissions protect access to sensitive data or capabilities and can require a runtime grant. The label does not mean an app is malicious. It means the app must justify and handle access according to the permission, device version and target-SDK rules.

By Updated 2 min read

Do not maintain a timeless pasted list

The permission reference documents protection levels, API introductions and restrictions. A list copied from an old Android release can omit newer media or notification permissions and include access patterns that no longer work as described.

Build a release-specific inventory instead:

Field Example question
Permission name What exact constant is declared?
Feature Which user action needs it?
API range On which supported versions does this path apply?
Grant mechanism Runtime dialog, special settings or another controlled mechanism?
Fallback What remains usable after denial?
Source Did the app or a dependency add it?

Distinguish the protection mechanisms

INTERNET is not requested through a dangerous-permission dialog. Overlay access uses a special settings flow. Signature or privileged permissions are not ordinary runtime requests. Treating all manifest entries identically produces broken permission screens and misleading audits.

The permissions overview is a better starting model than a scanner's count of “risky” names.

Request access at the feature boundary

Ask when the person invokes the feature, explain why it needs access, and handle refusal without blocking unrelated functions. Do not request camera, microphone, location and contacts at startup merely because some future feature might use them.

Use current runtime-permission APIs and check again at the point of use. Grants can change outside your app, and a previously successful request is not permanent evidence of access.

Audit the merged release

Inspect the final manifest, not only your module's source manifest. SDKs can contribute permissions during merging. Removing a permission requires checking whether the corresponding feature or dependency still expects it.

Test fresh install, denial, later grant, revocation and supported older devices. Include partial or limited access where the platform supports it.

Interpret APKLint findings

The Dangerous Permissions Checker helps identify declarations worth reviewing. It cannot determine whether the user currently granted them or whether the app uses the data as disclosed. Combine package inspection with runtime testing and a feature-level explanation for each permission.

Sources and further reading

  1. Android Developers: Permissions overview
  2. Android Developers: Manifest.permission reference
  3. Android Developers: Request runtime permissions

Reference review: 22 September 2026. Examples illustrate the workflow; check your installed versions, release artifact and account-specific Console requirements before applying them. This guide is not a claim that APKLint executed your project or verified your private account.

APKLint

Android inspection tools and practical release guides. About APKLint · Report a correction