Android Permission Reference

Permission Protection

android.permission.ACCESS_CHECKIN_PROPERTIES

API level 1

Allows read/write access to the "properties" table in the checkin database, to change values that get uploaded.

system

android.permission.ACCESS_COARSE_LOCATION

API level 1

Allows an app to access approximate location.

dangerous

android.permission.ACCESS_FINE_LOCATION

API level 1

Allows an app to access precise location.

dangerous

android.permission.ACCESS_LOCATION_EXTRA_COMMANDS

API level 1

Allows an application to access extra location provider commands

android.permission.ACCESS_NETWORK_STATE

API level 1

Allows applications to access information about networks

android.permission.ACCESS_NOTIFICATION_POLICY

API level 23

Marker permission for applications that wish to access notification policy.

android.permission.ACCESS_WIFI_STATE

API level 1

Allows applications to access information about Wi-Fi networks.

android.permission.ACCOUNT_MANAGER

API level 5

Allows applications to call into AccountAuthenticators.

system

com.android.voicemail.permission.ADD_VOICEMAIL

API level 14

Allows an application to add voicemails into the system.

dangerous

android.permission.BATTERY_STATS

API level 1

Allows an application to collect battery statistics

android.permission.BIND_ACCESSIBILITY_SERVICE

API level 16

Must be required by an AccessibilityService, to ensure that only the system can bind to it.

signature

android.permission.BIND_APPWIDGET

API level 3

Allows an application to tell the AppWidget service which application can access AppWidget's data. The normal user flow is that a user picks an AppWidget to go into a particular host, thereby giving that host application access to the private data from the AppWidget app. An application that has this permission should honor that contract.

system

android.permission.BIND_CARRIER_MESSAGING_SERVICE

API level 22

android.permission.BIND_CARRIER_SERVICES

API level 23

The system process that is allowed to bind to services in carrier apps will have this permission. Carrier apps should use this permission to protect their services that only the system is allowed to bind to.

system|signature

android.permission.BIND_CHOOSER_TARGET_SERVICE

API level 23

Must be required by a ChooserTargetService, to ensure that only the system can bind to it.

signature

android.permission.BIND_DEVICE_ADMIN

API level 8

Must be required by device administration receiver, to ensure that only the system can interact with it.

signature

android.permission.BIND_DREAM_SERVICE

API level 21

Must be required by an DreamService, to ensure that only the system can bind to it.

signature

android.permission.BIND_INCALL_SERVICE

API level 23

Must be required by a InCallService, to ensure that only the system can bind to it.

system|signature

android.permission.BIND_INPUT_METHOD

API level 3

Must be required by an InputMethodService, to ensure that only the system can bind to it.

signature

android.permission.BIND_MIDI_DEVICE_SERVICE

API level 23

Must be required by an MidiDeviceService, to ensure that only the system can bind to it.

signature

android.permission.BIND_NFC_SERVICE

API level 19

Must be required by a HostApduService or OffHostApduService to ensure that only the system can bind to it.

signature

android.permission.BIND_NOTIFICATION_LISTENER_SERVICE

API level 18

Must be required by an NotificationListenerService, to ensure that only the system can bind to it.

signature

android.permission.BIND_PRINT_SERVICE

API level 19

Must be required by a PrintService, to ensure that only the system can bind to it.

signature

android.permission.BIND_REMOTEVIEWS

API level 11

Must be required by a RemoteViewsService, to ensure that only the system can bind to it.

android.permission.BIND_TELECOM_CONNECTION_SERVICE

API level 23

Must be required by a ConnectionService, to ensure that only the system can bind to it.

system|signature

android.permission.BIND_TEXT_SERVICE

API level 14

Must be required by a TextService (e.g. SpellCheckerService) to ensure that only the system can bind to it.

signature

android.permission.BIND_TV_INPUT

API level 21

Must be required by a TvInputService to ensure that only the system can bind to it.

signature

android.permission.BIND_VOICE_INTERACTION

API level 21

Must be required by a VoiceInteractionService, to ensure that only the system can bind to it.

signature

android.permission.BIND_VPN_SERVICE

API level 14

Must be required by a VpnService, to ensure that only the system can bind to it.

signature

android.permission.BIND_WALLPAPER

API level 8

Must be required by a WallpaperService, to ensure that only the system can bind to it.

system|signature

android.permission.BLUETOOTH

API level 1

Allows applications to connect to paired bluetooth devices.

android.permission.BLUETOOTH_ADMIN

API level 1

Allows applications to discover and pair bluetooth devices.

android.permission.BLUETOOTH_PRIVILEGED

API level 19

Allows applications to pair bluetooth devices without user interaction, and to allow or disallow phonebook access or message access. This is not available to third party applications.

android.permission.BODY_SENSORS

API level 20

Allows an application to access data from sensors that the user uses to measure what is happening inside his/her body, such as heart rate.

dangerous

android.permission.BROADCAST_PACKAGE_REMOVED

API level 1

Allows an application to broadcast a notification that an application package has been removed.

system

android.permission.BROADCAST_SMS

API level 2

Allows an application to broadcast an SMS receipt notification.

system

android.permission.BROADCAST_STICKY

API level 1

Allows an application to broadcast sticky intents. These are broadcasts whose data is held by the system after being finished, so that clients can quickly retrieve that data without having to wait for the next broadcast.

android.permission.BROADCAST_WAP_PUSH

API level 2

Allows an application to broadcast a WAP PUSH receipt notification.

system

android.permission.CALL_PHONE

API level 1

Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call.

dangerous

android.permission.CALL_PRIVILEGED

API level 1

Allows an application to call any phone number, including emergency numbers, without going through the Dialer user interface for the user to confirm the call being placed.

system

android.permission.CAMERA

API level 1

Required to be able to access the camera device.

This will automatically enforce the manifest element for all camera features. If you do not require all camera features or can properly operate if a camera is not available, then you must modify your manifest as appropriate in order to install on devices that don't support all camera features.

android.permission.CAPTURE_AUDIO_OUTPUT

API level 19

Allows an application to capture audio output.

system

android.permission.CAPTURE_SECURE_VIDEO_OUTPUT

API level 19

Allows an application to capture secure video output.

system

android.permission.CAPTURE_VIDEO_OUTPUT

API level 19

Allows an application to capture video output.

system

android.permission.CHANGE_COMPONENT_ENABLED_STATE

API level 1

Allows an application to change whether an application component (other than its own) is enabled or not.

system

android.permission.CHANGE_CONFIGURATION

API level 1

Allows an application to modify the current configuration, such as locale.

android.permission.CHANGE_NETWORK_STATE

API level 1

Allows applications to change network connectivity state.

android.permission.CHANGE_WIFI_MULTICAST_STATE

API level 4

Allows applications to enter Wi-Fi Multicast mode.

android.permission.CHANGE_WIFI_STATE

API level 1

Allows applications to change Wi-Fi connectivity state.

android.permission.CLEAR_APP_CACHE

API level 1

Allows an application to clear the caches of all installed applications on the device.

system|signature

android.permission.CONTROL_LOCATION_UPDATES

API level 1

Allows enabling/disabling location update notifications from the radio.

system

android.permission.DELETE_CACHE_FILES

API level 1

Allows an application to delete cache files.

system

android.permission.DELETE_PACKAGES

API level 1

Allows an application to delete packages.

system

android.permission.DIAGNOSTIC

API level 1

Allows applications to RW to diagnostic resources.

system

android.permission.DISABLE_KEYGUARD

API level 1

Allows applications to disable the keyguard if it is not secure.

android.permission.DUMP

API level 1

Allows an application to retrieve state dump information from system services.

system

android.permission.EXPAND_STATUS_BAR

API level 1

Allows an application to expand or collapse the status bar.

android.permission.FACTORY_TEST

API level 1

Run as a manufacturer test application, running as the root user. Only available when the device is running in manufacturer test mode.

system

android.permission.FLASHLIGHT

API level 1

Allows access to the flashlight.

android.permission.GET_ACCOUNTS

API level 1

Allows access to the list of accounts in the Accounts Service.

android.permission.GET_ACCOUNTS_PRIVILEGED

API level 23

Allows access to the list of accounts in the Accounts Service.

android.permission.GET_PACKAGE_SIZE

API level 1

Allows an application to find out the space used by any package.

android.permission.GET_TASKS

API level 1

android.permission.GLOBAL_SEARCH

API level 4

This permission can be used on content providers to allow the global search system to access their data. Typically it used when the provider has some permissions protecting it (which global search would not be expected to hold), and added as a read-only permission to the path in the provider where global search queries are performed. This permission can not be held by regular applications; it is used by applications to protect themselves from everyone else besides global search.

android.permission.INSTALL_LOCATION_PROVIDER

API level 4

Allows an application to install a location provider into the Location Manager.

system

android.permission.INSTALL_PACKAGES

API level 1

Allows an application to install packages.

system

com.android.launcher.permission.INSTALL_SHORTCUT

API level 19

Allows an application to install a shortcut in Launcher.

android.permission.INTERNET

API level 1

Allows applications to open network sockets.

android.permission.KILL_BACKGROUND_PROCESSES

API level 8

Allows an application to call killBackgroundProcesses(String).

android.permission.LOCATION_HARDWARE

API level 18

Allows an application to use location features in hardware, such as the geofencing api.

system

android.permission.MANAGE_DOCUMENTS

API level 19

Allows an application to manage access to documents, usually as part of a document picker.

signature

android.permission.MASTER_CLEAR

API level 1

Not for use by third-party applications.

android.permission.MEDIA_CONTENT_CONTROL

API level 19

Allows an application to know what content is playing and control its playback.

Not for use by third-party applications due to privacy of media consumption

android.permission.MODIFY_AUDIO_SETTINGS

API level 1

Allows an application to modify global audio settings.

android.permission.MODIFY_PHONE_STATE

API level 1

Allows modification of the telephony state - power on, mmi, etc. Does not include placing calls.

system

android.permission.MOUNT_FORMAT_FILESYSTEMS

API level 3

Allows formatting file systems for removable storage.

system

android.permission.MOUNT_UNMOUNT_FILESYSTEMS

API level 1

Allows mounting and unmounting file systems for removable storage.

system

android.permission.NFC

API level 9

Allows applications to perform I/O operations over NFC.

android.permission.PACKAGE_USAGE_STATS

API level 23

Allows an application to collect component usage statistics

Declaring the permission implies intention to use the API and the user of the device can grant permission through the Settings application.

android.permission.PERSISTENT_ACTIVITY

API level 1

android.permission.PROCESS_OUTGOING_CALLS

API level 1

Allows an application to see the number being dialed during an outgoing call with the option to redirect the call to a different number or abort the call altogether.

dangerous

android.permission.READ_CALENDAR

API level 1

Allows an application to read the user's calendar data.

dangerous

android.permission.READ_CALL_LOG

API level 16

Allows an application to read the user's call log.

dangerous

android.permission.READ_CONTACTS

API level 1

Allows an application to read the user's contacts data.

dangerous

android.permission.READ_EXTERNAL_STORAGE

API level 16

Allows an application to read from external storage.

Any app that declares the WRITE_EXTERNAL_STORAGE permission is implicitly granted this permission.

android.permission.READ_FRAME_BUFFER

API level 1

Allows an application to take screen shots and more generally get access to the frame buffer data.

system

android.permission.READ_INPUT_STATE

API level 1

Allows an application to retrieve the current state of keys and switches.

system

android.permission.READ_LOGS

API level 1

Allows an application to read the low-level system log files.

Not for use by third-party applications, because Log entries can contain the user's private information.

android.permission.READ_PHONE_STATE

API level 1

Allows read only access to phone state.

dangerous

android.permission.READ_SMS

API level 1

Allows an application to read SMS messages.

dangerous

android.permission.READ_SYNC_SETTINGS

API level 1

Allows applications to read the sync settings.

android.permission.READ_SYNC_STATS

API level 1

Allows applications to read the sync stats.

com.android.voicemail.permission.READ_VOICEMAIL

API level 21

Allows an application to read voicemails in the system.

system|signature

android.permission.REBOOT

API level 1

Required to be able to reboot the device.

system

android.permission.RECEIVE_BOOT_COMPLETED

API level 1

Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting. If you don't request this permission, you will not receive the broadcast at that time. Though holding this permission does not have any security implications, it can have a negative impact on the user experience by increasing the amount of time it takes the system to start and allowing applications to have themselves running without the user being aware of them. As such, you must explicitly declare your use of this facility to make that visible to the user.

android.permission.RECEIVE_MMS

API level 1

Allows an application to monitor incoming MMS messages.

dangerous

android.permission.RECEIVE_SMS

API level 1

Allows an application to receive SMS messages.

dangerous

android.permission.RECEIVE_WAP_PUSH

API level 1

Allows an application to receive WAP push messages.

dangerous

android.permission.RECORD_AUDIO

API level 1

Allows an application to record audio.

dangerous

android.permission.REORDER_TASKS

API level 1

Allows an application to change the Z-order of tasks.

android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS

API level 23

Permission an application must hold in order to use ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. This is a normal permission: an app requesting it will always be granted the permission, without the user needing to approve or see it.

android.permission.REQUEST_INSTALL_PACKAGES

API level 23

Allows an application to request installing packages. Apps targeting APIs greater than 22 must hold this permission in order to use ACTION_INSTALL_PACKAGE.

android.permission.RESTART_PACKAGES

API level 1

android.permission.SEND_RESPOND_VIA_MESSAGE

API level 18

Allows an application (Phone) to send a request to other applications to handle the respond-via-message action during incoming calls.

system

android.permission.SEND_SMS

API level 1

Allows an application to send SMS messages.

dangerous

com.android.alarm.permission.SET_ALARM

API level 9

Allows an application to broadcast an Intent to set an alarm for the user.

android.permission.SET_ALWAYS_FINISH

API level 1

Allows an application to control whether activities are immediately finished when put in the background.

system

android.permission.SET_ANIMATION_SCALE

API level 1

Modify the global animation scaling factor.

system

android.permission.SET_DEBUG_APP

API level 1

Configure an application for debugging.

system

android.permission.SET_PREFERRED_APPLICATIONS

API level 1

android.permission.SET_PROCESS_LIMIT

API level 1

Allows an application to set the maximum number of (not needed) application processes that can be running.

system

android.permission.SET_TIME

API level 8

Allows applications to set the system time.

system

android.permission.SET_TIME_ZONE

API level 1

Allows applications to set the system time zone.

android.permission.SET_WALLPAPER

API level 1

Allows applications to set the wallpaper.

android.permission.SET_WALLPAPER_HINTS

API level 1

Allows applications to set the wallpaper hints.

android.permission.SIGNAL_PERSISTENT_PROCESSES

API level 1

Allow an application to request that a signal be sent to all persistent processes.

system

android.permission.STATUS_BAR

API level 1

Allows an application to open, close, or disable the status bar and its icons.

system

android.permission.SYSTEM_ALERT_WINDOW

API level 1

Allows an application to open windows using the type TYPE_SYSTEM_ALERT, shown on top of all other applications. Very few applications should use this permission; these windows are intended for system-level interaction with the user.

android.permission.TRANSMIT_IR

API level 19

Allows using the device's IR transmitter, if available.

com.android.launcher.permission.UNINSTALL_SHORTCUT

API level 19

Allows an application to uninstall a shortcut in Launcher.

android.permission.UPDATE_DEVICE_STATS

API level 3

Allows an application to update device statistics.

system

android.permission.USE_FINGERPRINT

API level 23

Allows an app to use fingerprint hardware.

android.permission.USE_SIP

API level 9

Allows an application to use SIP service.

dangerous

android.permission.VIBRATE

API level 1

Allows access to the vibrator.

android.permission.WAKE_LOCK

API level 1

Allows using PowerManager WakeLocks to keep processor from sleeping or screen from dimming.

android.permission.WRITE_APN_SETTINGS

API level 1

Allows applications to write the apn settings.

system

android.permission.WRITE_CALENDAR

API level 1

Allows an application to write the user's calendar data.

dangerous

android.permission.WRITE_CALL_LOG

API level 16

Allows an application to write (but not read) the user's contacts data.

dangerous

android.permission.WRITE_CONTACTS

API level 1

Allows an application to write the user's contacts data.

dangerous

android.permission.WRITE_EXTERNAL_STORAGE

API level 4

Allows an application to write to external storage.

Starting in API level 19, this permission is not required to read/write files in your application-specific directories returned by getExternalFilesDir(String) and getExternalCacheDir().

android.permission.WRITE_GSERVICES

API level 1

Allows an application to modify the Google service map.

system

android.permission.WRITE_SECURE_SETTINGS

API level 3

Allows an application to read or write the secure system settings.

system

android.permission.WRITE_SETTINGS

API level 1

Allows an application to read or write the system settings.

signature

android.permission.WRITE_SYNC_SETTINGS

API level 1

Allows applications to write the sync settings.

com.android.voicemail.permission.WRITE_VOICEMAIL

API level 21

Allows an application to modify and remove existing voicemails in the system

system|signature