Android App Permissions Explained

When you install an APK, the app may request certain permissions to access features on your device. Understanding what each permission means helps you make informed decisions before installing an app. Below is a comprehensive guide to the most common Android permissions you may encounter.

📷 Camera & Microphone

CAMERA

📷 Camera

What it does: Allows the app to take photos and record videos using your device’s camera.

Why it’s needed: Photo apps, video conferencing, barcode scanners, and social media apps that let you take photos.

Risk level: Medium — only grant to trusted apps that genuinely need camera access.

RECORD_AUDIO

🎤 Microphone

What it does: Allows the app to record audio using your device’s microphone.

Why it’s needed: Voice recorder apps, voice notes, video conferencing, and apps that let you record audio.

Risk level: Medium — only grant to trusted apps that genuinely need microphone access.

📍 Location

ACCESS_FINE_LOCATION

📍 Precise location

What it does: Allows the app to determine your exact location using GPS, WiFi, and mobile networks (typically within 50 meters).

Why it’s needed: Navigation apps, ride-sharing services, geotagging photos, and local business finders.

Risk level: High — can track your movements in real time.

ACCESS_COARSE_LOCATION

📍 Approximate location

What it does: Allows the app to determine your approximate location using WiFi or mobile network data (typically within several kilometers).

Why it’s needed: Weather apps, local news, store locators, and apps that only need your general area.

Risk level: Low-Medium — provides a general area but not exact coordinates.

ACCESS_BACKGROUND_LOCATION

📍 Location always

What it does: Allows the app to access your location even when it’s not in use (background).

Why it’s needed: Fitness trackers, delivery apps, and apps that monitor location over time.

Risk level: High — enables continuous tracking even when you’re not actively using the app.

📁 Storage & Files

READ_EXTERNAL_STORAGE

📁 Read storage

What it does: Allows the app to read files stored on your device’s external storage (SD card or shared storage).

Why it’s needed: File managers, media players, document viewers, and apps that import files.

Risk level: Medium — can access photos, videos, documents, and other files.

Note: On Android 13+ (API 33), this permission is replaced by granular media permissions below.

WRITE_EXTERNAL_STORAGE

📁 Write storage

What it does: Allows the app to create, modify, and delete files on your device’s external storage.

Why it’s needed: File editors, download managers, photo editing apps, and apps that save files to your device.

Risk level: Medium-High — can delete or overwrite your files.

Note: On Android 11+ (API 30), this permission is restricted and replaced by scoped storage.

READ_MEDIA_IMAGES

🖼️ Access photos

What it does: Allows the app to read photo files stored on your device.

Why it’s needed: Photo editors, gallery apps, social media uploads, and backup services.

Risk level: Medium — can view all photos on your device.

READ_MEDIA_VIDEO

🎞️ Access videos

What it does: Allows the app to read video files stored on your device.

Why it’s needed: Video players, video editors, gallery apps, and cloud backup services.

Risk level: Medium — can view all videos on your device.

READ_MEDIA_AUDIO

🎵 Access audio files

What it does: Allows the app to read audio files stored on your device.

Why it’s needed: Music players, podcast apps, ringtone managers, and audio editors.

Risk level: Low-Medium — can view all audio files on your device.

MANAGE_EXTERNAL_STORAGE

📂 Full file access

What it does: Grants the app unrestricted access to all files on your device, including files owned by other apps.

Why it’s needed: Full-featured file managers, backup/restore tools, and antivirus apps.

Risk level: Very High — essentially full control over all your files. Only grant to apps you completely trust.

Note: Google Play has strict policies for apps requesting this permission.

🌐 Network & Internet

INTERNET

🌐 Internet access

What it does: Allows the app to make network connections to the internet.

Why it’s needed: Web browsers, email clients, social media, cloud services, and most apps that download or upload data.

Risk level: Low — almost all apps need this permission. The app can communicate with its servers but cannot access your network configuration.

ACCESS_NETWORK_STATE

📶 Network status

What it does: Allows the app to check if you have an internet connection and what type of connection (WiFi, mobile, etc.).

Why it’s needed: Apps that need to adapt behavior based on connectivity (e.g., load lower resolution images on mobile data).

Risk level: Low — only reads connection status, does not expose personal information.

ACCESS_WIFI_STATE

📶 WiFi status

What it does: Allows the app to check if WiFi is enabled and see information about currently connected WiFi networks.

Why it’s needed: WiFi analyzers, network diagnostics, and apps that need to know about WiFi connectivity.

Risk level: Low-Medium — can see WiFi network names and connection state.

CHANGE_WIFI_STATE

📶 Change WiFi

What it does: Allows the app to turn WiFi on or off, or connect to WiFi networks.

Why it’s needed: WiFi management apps, hotspot controllers, and automation tools.

Risk level: Medium — can modify your WiFi settings.

📞 Phone Calls & SMS

CALL_PHONE

📞 Make phone calls

What it does: Allows the app to initiate phone calls directly without going through the dialer interface.

Why it’s needed: Dialer apps, contact apps, and apps that call businesses or support numbers.

Risk level: Medium — can make calls without confirmation dialogs.

READ_PHONE_STATE

📞 Read phone status

What it does: Allows the app to read information about your phone and SIM card, including phone number, IMEI, and network operator.

Why it’s needed: Identity verification apps, carrier apps, and some banking/finance apps.

Risk level: High — exposes unique identifiers that can be used for tracking.

SEND_SMS

📱 Send SMS

What it does: Allows the app to send SMS text messages from your device.

Why it’s needed: Messaging apps, SMS clients, and apps that send verification codes or alerts via text.

Risk level: Medium-High — can send messages using your phone number, potentially incurring charges.

RECEIVE_SMS

📱 Receive SMS

What it does: Allows the app to receive and intercept incoming SMS messages.

Why it’s needed: Messaging apps and apps that automatically read verification codes.

Risk level: Medium — can read all incoming text messages.

READ_SMS

📱 Read SMS

What it does: Allows the app to read all SMS and MMS messages stored on your device.

Why it’s needed: SMS backup apps and messaging clients.

Risk level: High — can read all your text messages, including verification codes and private conversations.

👥 Contacts & Calendar

READ_CONTACTS

👥 Read contacts

What it does: Allows the app to read all contact information stored on your device, including names, phone numbers, email addresses, and more.

Why it’s needed: Contact backup apps, dialers, and social apps that help you find friends.

Risk level: High — exposes your entire address book, including sensitive contact details.

WRITE_CONTACTS

👥 Edit contacts

What it does: Allows the app to create, modify, or delete contacts on your device.

Why it’s needed: Contact managers, sync tools, and backup apps that restore contacts.

Risk level: Medium-High — can modify or delete your contact list.

READ_CALENDAR

📅 Read calendar

What it does: Allows the app to read all events, reminders, and attendee information from your calendar.

Why it’s needed: Calendar sync apps, meeting schedulers, and productivity tools.

Risk level: Medium — can see your schedule, appointments, and potentially meeting attendees.

WRITE_CALENDAR

📅 Edit calendar

What it does: Allows the app to create, modify, or delete events on your calendar.

Why it’s needed: Calendar apps, meeting schedulers, and apps that automatically add events (e.g., flight trackers).

Risk level: Medium — can alter your schedule.

🔔 Notifications

POST_NOTIFICATIONS

🔔 Show notifications

What it does: Allows the app to display notifications on your device’s notification bar.

Why it’s needed: Any app that needs to push updates, alerts, or messages to you (messaging, email, calendar, etc.).

Risk level: Low — almost all useful apps need this. You can later disable notifications per app in system settings.

Note: This permission was introduced in Android 13 (API 33). On older Android versions, apps can post notifications by default.

❤️ Fitness & Motion Sensors

BODY_SENSORS

❤️ Fitness sensors

What it does: Allows the app to access data from body sensors such as heart rate, blood oxygen level, and other fitness-related measurements.

Why it’s needed: Fitness trackers, health monitoring apps, and connected health devices.

Risk level: Medium — exposes sensitive health-related data.

ACTIVITY_RECOGNITION

🏃 Activity recognition

What it does: Allows the app to detect your current physical activity (walking, running, cycling, driving, stationary) using the device’s motion sensors.

Why it’s needed: Fitness apps, mileage trackers, location-based apps, and driving detectors.

Risk level: Medium — reveals your movement patterns and transportation methods.

🪟 Overlay & System Settings

SYSTEM_ALERT_WINDOW

🪟 Show over other apps

What it does: Allows the app to draw floating windows that appear on top of other apps.

Why it’s needed: Chat heads (messenger bubbles), screen recorders, floating calculators, and app lockers.

Risk level: Medium-High — can overlay content on top of other apps, which has potential for abuse (phishing overlays).

Note: This is a special permission that must be granted manually from system settings on Android 6.0+ (API 23).

WRITE_SETTINGS

⚙️ Modify settings

What it does: Allows the app to change system settings like brightness, volume, and default apps.

Why it’s needed: Brightness schedulers, sound managers, and automation tools.

Risk level: Medium — can alter your device settings without your direct knowledge.

Note: This is a special permission that must be granted manually from system settings on Android 6.0+ (API 23).

REQUEST_INSTALL_PACKAGES

📦 Install unknown apps

What it does: Allows the app to request installation of other APK files (apps not from the Google Play Store).

Why it’s needed: File managers, APK downloaders, and app stores that distribute APKs outside of Google Play.

Risk level: Medium-High — enables sideloading, which could be exploited to install malicious apps.

Note: This is a special permission that must be granted manually from system settings on Android 8.0+ (API 26).

🔵 Bluetooth

BLUETOOTH

🔵 Bluetooth

What it does: Allows the app to initiate Bluetooth connections with paired devices.

Why it’s needed: Bluetooth accessories (headphones, speakers, keyboards), smartwatches, and car connectivity.

Risk level: Low — controls basic Bluetooth connectivity.

Note: Deprecated in Android 12+ (API 31). Newer apps should use BLUETOOTH_CONNECT instead.

BLUETOOTH_ADMIN

🔵 Bluetooth control

What it does: Allows the app to turn Bluetooth on/off and discover or pair with devices.

Why it’s needed: Bluetooth management apps and apps that need to pair with new devices.

Risk level: Low-Medium — can toggle Bluetooth and pair with new devices.

Note: Deprecated in Android 12+ (API 31). Newer apps should use BLUETOOTH_SCAN and BLUETOOTH_CONNECT instead.

BLUETOOTH_CONNECT

🔵 Connect to Bluetooth devices

What it does: Allows the app to connect to and communicate with previously paired Bluetooth devices.

Why it’s needed: Bluetooth audio devices, smartwatches, and other paired accessories.

Risk level: Low — connects only to devices you have already paired with.

Note: Added in Android 12 (API 31).

BLUETOOTH_SCAN

🔵 Scan for Bluetooth devices

What it does: Allows the app to discover nearby Bluetooth devices.

Why it’s needed: Bluetooth setup wizards, device finders, and apps that need to locate devices to pair with.

Risk level: Low — only discovers nearby devices, does not connect.

Note: Added in Android 12 (API 31). Requires location permission on older Android versions.

Frequently Asked Questions

Why does APK Installer show permissions before installing?

APK Installer extracts and displays permissions from the APK before installation so you can review them. This helps you make informed decisions about what an app can access on your device.

Are permissions granted immediately after installation?

Not necessarily. On Android 6.0+ (API 23), most dangerous permissions must be requested and granted by the user at runtime, not just at install time. The app will show a popup asking for permission when it first needs to use a protected feature.

Can I revoke permissions after installing?

Yes! You can revoke any permission at any time by going to Settings → Apps → [App Name] → Permissions on your Android device. It’s a good idea to review permissions regularly.

What are “dangerous” vs “normal” permissions?

Android categorizes permissions into two groups:

  • Normal permissions are lower-risk permissions that don’t directly access sensitive data. They are granted automatically at install time (e.g., INTERNET, ACCESS_NETWORK_STATE).
  • Dangerous permissions provide access to sensitive data or device features. The user must explicitly grant them at runtime (e.g., CAMERA, READ_CONTACTS, ACCESS_FINE_LOCATION).

What happens if I decline a permission request?

The app will likely lose access to that particular feature. For example, if you deny Camera permission, the app won’t be able to take photos. Most apps will gracefully handle denied permissions, but some features may become unavailable.


This page is part of APK Installer by Unitepage. Android is a trademark of Google LLC.

Scroll to Top