Last active
February 6, 2025 03:30
-
-
Save fourjr/7ed488c3c57d7bcabd042c26c9f3a835 to your computer and use it in GitHub Desktop.
Android Permissions (JSON format)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"name": "ACCEPT_HANDOVER", | |
"api_level": "Added in API level 28", | |
"description": "Allows a calling app to continue a call which was started in another app. An example is a video calling app that wants to continue a voice call on the user's mobile network. When the handover of a call from one app to another takes place, there are two devices which are involved in the handover; the initiating and receiving devices. The initiating device is where the request to handover the call was started, and the receiving device is where the handover request is confirmed by the other party. This permission protects access to the TelecomManager.acceptHandover(Uri, int, PhoneAccountHandle) which the receiving side of the handover uses to accept a handover.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.ACCEPT_HANDOVER" | |
}, | |
{ | |
"name": "ACCESS_BACKGROUND_LOCATION", | |
"api_level": "Added in API level 29", | |
"description": "Allows an app to access location in the background. If you're requesting this permission, you must also request either ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION. Requesting this permission by itself doesn't give you location access. This is a hard restricted permission which cannot be held by an app until the installer on record allowlists the permission. For more details see PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions(Set).", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.ACCESS_BACKGROUND_LOCATION" | |
}, | |
{ | |
"name": "ACCESS_BLOBS_ACROSS_USERS", | |
"api_level": "Added in API level 31", | |
"description": "Allows an application to access data blobs across users.", | |
"protection_level": null, | |
"constant_value": "android.permission.ACCESS_BLOBS_ACROSS_USERS" | |
}, | |
{ | |
"name": "ACCESS_CHECKIN_PROPERTIES", | |
"api_level": "Added in API level 1", | |
"description": "Allows read/write access to the \"properties\" table in the checkin database, to change values that get uploaded. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.ACCESS_CHECKIN_PROPERTIES" | |
}, | |
{ | |
"name": "ACCESS_COARSE_LOCATION", | |
"api_level": "Added in API level 1", | |
"description": "Allows an app to access approximate location. Alternatively, you might want ACCESS_FINE_LOCATION.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.ACCESS_COARSE_LOCATION" | |
}, | |
{ | |
"name": "ACCESS_FINE_LOCATION", | |
"api_level": "Added in API level 1", | |
"description": "Allows an app to access precise location. Alternatively, you might want ACCESS_COARSE_LOCATION.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.ACCESS_FINE_LOCATION" | |
}, | |
{ | |
"name": "ACCESS_HIDDEN_PROFILES", | |
"api_level": "Added in API level 35", | |
"description": "Allows applications to access profiles with android.content.pm.UserProperties#PROFILE_API_VISIBILITY_HIDDEN user property, e.g. UserManager.USER_TYPE_PROFILE_PRIVATE.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.ACCESS_HIDDEN_PROFILES" | |
}, | |
{ | |
"name": "ACCESS_LOCATION_EXTRA_COMMANDS", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to access extra location provider commands.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" | |
}, | |
{ | |
"name": "ACCESS_MEDIA_LOCATION", | |
"api_level": "Added in API level 29", | |
"description": "Allows an application to access any geographic locations persisted in the user's shared collection.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.ACCESS_MEDIA_LOCATION" | |
}, | |
{ | |
"name": "ACCESS_NETWORK_STATE", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to access information about networks.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.ACCESS_NETWORK_STATE" | |
}, | |
{ | |
"name": "ACCESS_NOTIFICATION_POLICY", | |
"api_level": "Added in API level 23", | |
"description": "Marker permission for applications that wish to access notification policy. This permission is not supported on managed profiles.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.ACCESS_NOTIFICATION_POLICY" | |
}, | |
{ | |
"name": "ACCESS_WIFI_STATE", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to access information about Wi-Fi networks.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.ACCESS_WIFI_STATE" | |
}, | |
{ | |
"name": "ACCOUNT_MANAGER", | |
"api_level": "Added in API level 5", | |
"description": "Allows applications to call into AccountAuthenticators. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.ACCOUNT_MANAGER" | |
}, | |
{ | |
"name": "ACTIVITY_RECOGNITION", | |
"api_level": "Added in API level 29", | |
"description": "Allows an application to recognize physical activity.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.ACTIVITY_RECOGNITION" | |
}, | |
{ | |
"name": "ADD_VOICEMAIL", | |
"api_level": "Added in API level 14", | |
"description": "Allows an application to add voicemails into the system.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "com.android.voicemail.permission.ADD_VOICEMAIL" | |
}, | |
{ | |
"name": "ANSWER_PHONE_CALLS", | |
"api_level": "Added in API level 26", | |
"description": "Allows the app to answer an incoming phone call.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.ANSWER_PHONE_CALLS" | |
}, | |
{ | |
"name": "BATTERY_STATS", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to collect battery statistics", | |
"protection_level": [ | |
"signature", | |
"privileged", | |
"development" | |
], | |
"constant_value": "android.permission.BATTERY_STATS" | |
}, | |
{ | |
"name": "BIND_ACCESSIBILITY_SERVICE", | |
"api_level": "Added in API level 16", | |
"description": "Must be required by an AccessibilityService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_ACCESSIBILITY_SERVICE" | |
}, | |
{ | |
"name": "BIND_APPWIDGET", | |
"api_level": "Added in API level 3", | |
"description": "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. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.BIND_APPWIDGET" | |
}, | |
{ | |
"name": "BIND_APP_FUNCTION_SERVICE", | |
"api_level": "Added in Android Baklava", | |
"description": "Must be required by an AppFunctionService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_APP_FUNCTION_SERVICE" | |
}, | |
{ | |
"name": "BIND_AUTOFILL_SERVICE", | |
"api_level": "Added in API level 26", | |
"description": "Must be required by a AutofillService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_AUTOFILL_SERVICE" | |
}, | |
{ | |
"name": "BIND_CALL_REDIRECTION_SERVICE", | |
"api_level": "Added in API level 29", | |
"description": "Must be required by a CallRedirectionService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.BIND_CALL_REDIRECTION_SERVICE" | |
}, | |
{ | |
"name": "BIND_CARRIER_MESSAGING_CLIENT_SERVICE", | |
"api_level": "Added in API level 29", | |
"description": "A subclass of CarrierMessagingClientService must be protected with this permission.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE" | |
}, | |
{ | |
"name": "BIND_CARRIER_MESSAGING_SERVICE", | |
"api_level": "Added in API level 22 Deprecated in API level 23", | |
"description": "This constant was deprecated in API level 23. Use BIND_CARRIER_SERVICES instead", | |
"protection_level": null, | |
"constant_value": "android.permission.BIND_CARRIER_MESSAGING_SERVICE" | |
}, | |
{ | |
"name": "BIND_CARRIER_SERVICES", | |
"api_level": "Added in API level 23", | |
"description": "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.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.BIND_CARRIER_SERVICES" | |
}, | |
{ | |
"name": "BIND_CHOOSER_TARGET_SERVICE", | |
"api_level": "Added in API level 23 Deprecated in API level 30", | |
"description": "This constant was deprecated in API level 30. For publishing direct share targets, please follow the instructions in https://developer.android.com/training/sharing/receive.html#providing-direct-share-targets instead. Must be required by a ChooserTargetService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_CHOOSER_TARGET_SERVICE" | |
}, | |
{ | |
"name": "BIND_COMPANION_DEVICE_SERVICE", | |
"api_level": "Added in API level 31", | |
"description": "Must be required by any CompanionDeviceServices to ensure that only the system can bind to it.", | |
"protection_level": null, | |
"constant_value": "android.permission.BIND_COMPANION_DEVICE_SERVICE" | |
}, | |
{ | |
"name": "BIND_CONDITION_PROVIDER_SERVICE", | |
"api_level": "Added in API level 24", | |
"description": "Must be required by a ConditionProviderService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_CONDITION_PROVIDER_SERVICE" | |
}, | |
{ | |
"name": "BIND_CONTROLS", | |
"api_level": "Added in API level 30", | |
"description": "Allows SystemUI to request third party controls. Should only be requested by the System and required by ControlsProviderService declarations.", | |
"protection_level": null, | |
"constant_value": "android.permission.BIND_CONTROLS" | |
}, | |
{ | |
"name": "BIND_CREDENTIAL_PROVIDER_SERVICE", | |
"api_level": "Added in API level 34", | |
"description": "Must be required by a CredentialProviderService to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_CREDENTIAL_PROVIDER_SERVICE" | |
}, | |
{ | |
"name": "BIND_DEVICE_ADMIN", | |
"api_level": "Added in API level 8", | |
"description": "Must be required by device administration receiver, to ensure that only the system can interact with it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_DEVICE_ADMIN" | |
}, | |
{ | |
"name": "BIND_DREAM_SERVICE", | |
"api_level": "Added in API level 21", | |
"description": "Must be required by an DreamService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_DREAM_SERVICE" | |
}, | |
{ | |
"name": "BIND_INCALL_SERVICE", | |
"api_level": "Added in API level 23", | |
"description": "Must be required by a InCallService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.BIND_INCALL_SERVICE" | |
}, | |
{ | |
"name": "BIND_INPUT_METHOD", | |
"api_level": "Added in API level 3", | |
"description": "Must be required by an InputMethodService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_INPUT_METHOD" | |
}, | |
{ | |
"name": "BIND_MIDI_DEVICE_SERVICE", | |
"api_level": "Added in API level 23", | |
"description": "Must be required by an MidiDeviceService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_MIDI_DEVICE_SERVICE" | |
}, | |
{ | |
"name": "BIND_NFC_SERVICE", | |
"api_level": "Added in API level 19", | |
"description": "Must be required by a HostApduService or OffHostApduService to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_NFC_SERVICE" | |
}, | |
{ | |
"name": "BIND_NOTIFICATION_LISTENER_SERVICE", | |
"api_level": "Added in API level 18", | |
"description": "Must be required by an NotificationListenerService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" | |
}, | |
{ | |
"name": "BIND_PRINT_SERVICE", | |
"api_level": "Added in API level 19", | |
"description": "Must be required by a PrintService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_PRINT_SERVICE" | |
}, | |
{ | |
"name": "BIND_QUICK_ACCESS_WALLET_SERVICE", | |
"api_level": "Added in API level 30", | |
"description": "Must be required by a QuickAccessWalletService to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE" | |
}, | |
{ | |
"name": "BIND_QUICK_SETTINGS_TILE", | |
"api_level": "Added in API level 24", | |
"description": "Allows an application to bind to third party quick settings tiles. Should only be requested by the System, should be required by TileService declarations.", | |
"protection_level": null, | |
"constant_value": "android.permission.BIND_QUICK_SETTINGS_TILE" | |
}, | |
{ | |
"name": "BIND_REMOTEVIEWS", | |
"api_level": "Added in API level 11", | |
"description": "Must be required by a RemoteViewsService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.BIND_REMOTEVIEWS" | |
}, | |
{ | |
"name": "BIND_SCREENING_SERVICE", | |
"api_level": "Added in API level 24", | |
"description": "Must be required by a CallScreeningService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.BIND_SCREENING_SERVICE" | |
}, | |
{ | |
"name": "BIND_TELECOM_CONNECTION_SERVICE", | |
"api_level": "Added in API level 23", | |
"description": "Must be required by a ConnectionService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.BIND_TELECOM_CONNECTION_SERVICE" | |
}, | |
{ | |
"name": "BIND_TEXT_SERVICE", | |
"api_level": "Added in API level 14", | |
"description": "Must be required by a TextService (e.g. SpellCheckerService) to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_TEXT_SERVICE" | |
}, | |
{ | |
"name": "BIND_TV_AD_SERVICE", | |
"api_level": "Added in Android Baklava", | |
"description": "Must be required by a android.media.tv.ad.TvAdService to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.BIND_TV_AD_SERVICE" | |
}, | |
{ | |
"name": "BIND_TV_INPUT", | |
"api_level": "Added in API level 21", | |
"description": "Must be required by a TvInputService to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.BIND_TV_INPUT" | |
}, | |
{ | |
"name": "BIND_TV_INTERACTIVE_APP", | |
"api_level": "Added in API level 33", | |
"description": "Must be required by a TvInteractiveAppService to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.BIND_TV_INTERACTIVE_APP" | |
}, | |
{ | |
"name": "BIND_VISUAL_VOICEMAIL_SERVICE", | |
"api_level": "Added in API level 26", | |
"description": "Must be required by a link VisualVoicemailService to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE" | |
}, | |
{ | |
"name": "BIND_VOICE_INTERACTION", | |
"api_level": "Added in API level 21", | |
"description": "Must be required by a VoiceInteractionService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_VOICE_INTERACTION" | |
}, | |
{ | |
"name": "BIND_VPN_SERVICE", | |
"api_level": "Added in API level 14", | |
"description": "Must be required by a VpnService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_VPN_SERVICE" | |
}, | |
{ | |
"name": "BIND_VR_LISTENER_SERVICE", | |
"api_level": "Added in API level 24", | |
"description": "Must be required by an VrListenerService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.BIND_VR_LISTENER_SERVICE" | |
}, | |
{ | |
"name": "BIND_WALLPAPER", | |
"api_level": "Added in API level 8", | |
"description": "Must be required by a WallpaperService, to ensure that only the system can bind to it.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.BIND_WALLPAPER" | |
}, | |
{ | |
"name": "BLUETOOTH", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to connect to paired bluetooth devices.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.BLUETOOTH" | |
}, | |
{ | |
"name": "BLUETOOTH_ADMIN", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to discover and pair bluetooth devices.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.BLUETOOTH_ADMIN" | |
}, | |
{ | |
"name": "BLUETOOTH_ADVERTISE", | |
"api_level": "Added in API level 31", | |
"description": "Required to be able to advertise to nearby Bluetooth devices.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.BLUETOOTH_ADVERTISE" | |
}, | |
{ | |
"name": "BLUETOOTH_CONNECT", | |
"api_level": "Added in API level 31", | |
"description": "Required to be able to connect to paired Bluetooth devices.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.BLUETOOTH_CONNECT" | |
}, | |
{ | |
"name": "BLUETOOTH_PRIVILEGED", | |
"api_level": "Added in API level 19", | |
"description": "Allows applications to pair bluetooth devices without user interaction, and to allow or disallow phonebook access or message access. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.BLUETOOTH_PRIVILEGED" | |
}, | |
{ | |
"name": "BLUETOOTH_SCAN", | |
"api_level": "Added in API level 31", | |
"description": "Required to be able to discover and pair nearby Bluetooth devices.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.BLUETOOTH_SCAN" | |
}, | |
{ | |
"name": "BODY_SENSORS", | |
"api_level": "Added in API level 20", | |
"description": "Allows an application to access data from sensors that the user uses to measure what is happening inside their body, such as heart rate.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.BODY_SENSORS" | |
}, | |
{ | |
"name": "BODY_SENSORS_BACKGROUND", | |
"api_level": "Added in API level 33", | |
"description": "Allows an application to access data from sensors that the user uses to measure what is happening inside their body, such as heart rate. If you're requesting this permission, you must also request BODY_SENSORS. Requesting this permission by itself doesn't give you Body sensors access. This is a hard restricted permission which cannot be held by an app until the installer on record allowlists the permission. For more details see PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions(Set).", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.BODY_SENSORS_BACKGROUND" | |
}, | |
{ | |
"name": "BROADCAST_PACKAGE_REMOVED", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to broadcast a notification that an application package has been removed. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.BROADCAST_PACKAGE_REMOVED" | |
}, | |
{ | |
"name": "BROADCAST_SMS", | |
"api_level": "Added in API level 2", | |
"description": "Allows an application to broadcast an SMS receipt notification. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.BROADCAST_SMS" | |
}, | |
{ | |
"name": "BROADCAST_STICKY", | |
"api_level": "Added in API level 1", | |
"description": "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.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.BROADCAST_STICKY" | |
}, | |
{ | |
"name": "BROADCAST_WAP_PUSH", | |
"api_level": "Added in API level 2", | |
"description": "Allows an application to broadcast a WAP PUSH receipt notification. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.BROADCAST_WAP_PUSH" | |
}, | |
{ | |
"name": "CALL_COMPANION_APP", | |
"api_level": "Added in API level 29", | |
"description": "Allows an app which implements the InCallService API to be eligible to be enabled as a calling companion app. This means that the Telecom framework will bind to the app's InCallService implementation when there are calls active. The app can use the InCallService API to view information about calls on the system and control these calls.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.CALL_COMPANION_APP" | |
}, | |
{ | |
"name": "CALL_PHONE", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call. Note: An app holding this permission can also call carrier MMI codes to change settings such as call forwarding or call waiting preferences.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.CALL_PHONE" | |
}, | |
{ | |
"name": "CALL_PRIVILEGED", | |
"api_level": "Added in API level 1", | |
"description": "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. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.CALL_PRIVILEGED" | |
}, | |
{ | |
"name": "CAMERA", | |
"api_level": "Added in API level 1", | |
"description": "Required to be able to access the camera device. This will automatically enforce the uses-feature 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.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.CAMERA" | |
}, | |
{ | |
"name": "CAPTURE_AUDIO_OUTPUT", | |
"api_level": "Added in API level 19", | |
"description": "Allows an application to capture audio output. Use the CAPTURE_MEDIA_OUTPUT permission if only the USAGE_UNKNOWN), USAGE_MEDIA) or USAGE_GAME) usages are intended to be captured. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.CAPTURE_AUDIO_OUTPUT" | |
}, | |
{ | |
"name": "CHANGE_COMPONENT_ENABLED_STATE", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to change whether an application component (other than its own) is enabled or not. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.CHANGE_COMPONENT_ENABLED_STATE" | |
}, | |
{ | |
"name": "CHANGE_CONFIGURATION", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to modify the current configuration, such as locale.", | |
"protection_level": [ | |
"signature", | |
"privileged", | |
"development" | |
], | |
"constant_value": "android.permission.CHANGE_CONFIGURATION" | |
}, | |
{ | |
"name": "CHANGE_NETWORK_STATE", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to change network connectivity state.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.CHANGE_NETWORK_STATE" | |
}, | |
{ | |
"name": "CHANGE_WIFI_MULTICAST_STATE", | |
"api_level": "Added in API level 4", | |
"description": "Allows applications to enter Wi-Fi Multicast mode.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.CHANGE_WIFI_MULTICAST_STATE" | |
}, | |
{ | |
"name": "CHANGE_WIFI_STATE", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to change Wi-Fi connectivity state.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.CHANGE_WIFI_STATE" | |
}, | |
{ | |
"name": "CLEAR_APP_CACHE", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to clear the caches of all installed applications on the device.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.CLEAR_APP_CACHE" | |
}, | |
{ | |
"name": "CONFIGURE_WIFI_DISPLAY", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to configure and connect to Wifi displays", | |
"protection_level": null, | |
"constant_value": "android.permission.CONFIGURE_WIFI_DISPLAY" | |
}, | |
{ | |
"name": "CONTROL_LOCATION_UPDATES", | |
"api_level": "Added in API level 1", | |
"description": "Allows enabling/disabling location update notifications from the radio. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.CONTROL_LOCATION_UPDATES" | |
}, | |
{ | |
"name": "CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS", | |
"api_level": "Added in API level 34", | |
"description": "Allows a browser to invoke the set of query apis to get metadata about credential candidates prepared during the CredentialManager.prepareGetCredential API.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS" | |
}, | |
{ | |
"name": "CREDENTIAL_MANAGER_SET_ALLOWED_PROVIDERS", | |
"api_level": "Added in API level 34", | |
"description": "Allows specifying candidate credential providers to be queried in Credential Manager get flows, or to be preferred as a default in the Credential Manager create flows.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.CREDENTIAL_MANAGER_SET_ALLOWED_PROVIDERS" | |
}, | |
{ | |
"name": "CREDENTIAL_MANAGER_SET_ORIGIN", | |
"api_level": "Added in API level 34", | |
"description": "Allows a browser to invoke credential manager APIs on behalf of another RP.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.CREDENTIAL_MANAGER_SET_ORIGIN" | |
}, | |
{ | |
"name": "DELETE_CACHE_FILES", | |
"api_level": "Added in API level 1", | |
"description": "Old permission for deleting an app's cache files, no longer used, but signals for us to quietly ignore calls instead of throwing an exception.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.DELETE_CACHE_FILES" | |
}, | |
{ | |
"name": "DELETE_PACKAGES", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to delete packages. Not for use by third-party applications. Starting in Build.VERSION_CODES.N, user confirmation is requested when the application deleting the package is not the same application that installed the package.", | |
"protection_level": null, | |
"constant_value": "android.permission.DELETE_PACKAGES" | |
}, | |
{ | |
"name": "DELIVER_COMPANION_MESSAGES", | |
"api_level": "Added in API level 33", | |
"description": "Allows an application to deliver companion messages to system", | |
"protection_level": null, | |
"constant_value": "android.permission.DELIVER_COMPANION_MESSAGES" | |
}, | |
{ | |
"name": "DETECT_SCREEN_CAPTURE", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to get notified when a screen capture of its windows is attempted.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.DETECT_SCREEN_CAPTURE" | |
}, | |
{ | |
"name": "DETECT_SCREEN_RECORDING", | |
"api_level": "Added in API level 35", | |
"description": "Allows an application to get notified when it is being recorded.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.DETECT_SCREEN_RECORDING" | |
}, | |
{ | |
"name": "DIAGNOSTIC", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to RW to diagnostic resources. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.DIAGNOSTIC" | |
}, | |
{ | |
"name": "DISABLE_KEYGUARD", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to disable the keyguard if it is not secure.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.DISABLE_KEYGUARD" | |
}, | |
{ | |
"name": "DUMP", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to retrieve state dump information from system services. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.DUMP" | |
}, | |
{ | |
"name": "ENFORCE_UPDATE_OWNERSHIP", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to indicate via PackageInstaller.SessionParams.setRequestUpdateOwnership(boolean) that it has the intention of becoming the update owner.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.ENFORCE_UPDATE_OWNERSHIP" | |
}, | |
{ | |
"name": "EXECUTE_APP_ACTION", | |
"api_level": "Added in API level 34", | |
"description": "Allows an assistive application to perform actions on behalf of users inside of applications. For now, this permission is only granted to the Assistant application selected by the user.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.EXECUTE_APP_ACTION" | |
}, | |
{ | |
"name": "EXECUTE_APP_FUNCTIONS", | |
"api_level": "Added in Android Baklava", | |
"description": "Allows an application to perform actions on behalf of users inside of applications. This permission is currently only granted to preinstalled / system apps having the ERROR(/android.app.role.ASSISTANT) role. Apps contributing app functions can opt to disallow callers with this permission, limiting to only callers with ERROR(/android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED) instead.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.EXECUTE_APP_FUNCTIONS" | |
}, | |
{ | |
"name": "EXPAND_STATUS_BAR", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to expand or collapse the status bar.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.EXPAND_STATUS_BAR" | |
}, | |
{ | |
"name": "FACTORY_TEST", | |
"api_level": "Added in API level 1", | |
"description": "Run as a manufacturer test application, running as the root user. Only available when the device is running in manufacturer test mode. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.FACTORY_TEST" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE", | |
"api_level": "Added in API level 28", | |
"description": "Allows a regular application to use Service.startForeground.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_CAMERA", | |
"api_level": "Added in API level 34", | |
"description": "Allows a regular application to use Service.startForeground with the type \"camera\".", | |
"protection_level": [ | |
"normal", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_CAMERA" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_CONNECTED_DEVICE", | |
"api_level": "Added in API level 34", | |
"description": "Allows a regular application to use Service.startForeground with the type \"connectedDevice\".", | |
"protection_level": [ | |
"normal", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_DATA_SYNC", | |
"api_level": "Added in API level 34", | |
"description": "Allows a regular application to use Service.startForeground with the type \"dataSync\".", | |
"protection_level": [ | |
"normal", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_DATA_SYNC" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_HEALTH", | |
"api_level": "Added in API level 34", | |
"description": "Allows a regular application to use Service.startForeground with the type \"health\".", | |
"protection_level": [ | |
"normal", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_HEALTH" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_LOCATION", | |
"api_level": "Added in API level 34", | |
"description": "Allows a regular application to use Service.startForeground with the type \"location\".", | |
"protection_level": [ | |
"normal", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_LOCATION" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_MEDIA_PLAYBACK", | |
"api_level": "Added in API level 34", | |
"description": "Allows a regular application to use Service.startForeground with the type \"mediaPlayback\".", | |
"protection_level": [ | |
"normal", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_MEDIA_PROCESSING", | |
"api_level": "Added in API level 35", | |
"description": "Allows a regular application to use Service.startForeground with the type \"mediaProcessing\".", | |
"protection_level": [ | |
"normal", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_MEDIA_PROCESSING" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_MEDIA_PROJECTION", | |
"api_level": "Added in API level 34", | |
"description": "Allows a regular application to use Service.startForeground with the type \"mediaProjection\".", | |
"protection_level": [ | |
"normal", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_MICROPHONE", | |
"api_level": "Added in API level 34", | |
"description": "Allows a regular application to use Service.startForeground with the type \"microphone\".", | |
"protection_level": [ | |
"normal", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_MICROPHONE" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_PHONE_CALL", | |
"api_level": "Added in API level 34", | |
"description": "Allows a regular application to use Service.startForeground with the type \"phoneCall\".", | |
"protection_level": [ | |
"normal", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_PHONE_CALL" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_REMOTE_MESSAGING", | |
"api_level": "Added in API level 34", | |
"description": "Allows a regular application to use Service.startForeground with the type \"remoteMessaging\".", | |
"protection_level": [ | |
"normal", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_SPECIAL_USE", | |
"api_level": "Added in API level 34", | |
"description": "Allows a regular application to use Service.startForeground with the type \"specialUse\".", | |
"protection_level": [ | |
"normal", | |
"appop", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_SPECIAL_USE" | |
}, | |
{ | |
"name": "FOREGROUND_SERVICE_SYSTEM_EXEMPTED", | |
"api_level": "Added in API level 34", | |
"description": "Allows a regular application to use Service.startForeground with the type \"systemExempted\". Apps are allowed to use this type only in the use cases listed in ServiceInfo.FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED.", | |
"protection_level": [ | |
"normal", | |
"instant" | |
], | |
"constant_value": "android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED" | |
}, | |
{ | |
"name": "GET_ACCOUNTS", | |
"api_level": "Added in API level 1", | |
"description": "Allows access to the list of accounts in the Accounts Service. Note: Beginning with Android 6.0 (API level 23), if an app shares the signature of the authenticator that manages an account, it does not need \"GET_ACCOUNTS\" permission to read information about that account. On Android 5.1 and lower, all apps need \"GET_ACCOUNTS\" permission to read information about any account.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.GET_ACCOUNTS" | |
}, | |
{ | |
"name": "GET_ACCOUNTS_PRIVILEGED", | |
"api_level": "Added in API level 23", | |
"description": "Allows access to the list of accounts in the Accounts Service.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.GET_ACCOUNTS_PRIVILEGED" | |
}, | |
{ | |
"name": "GET_PACKAGE_SIZE", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to find out the space used by any package.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.GET_PACKAGE_SIZE" | |
}, | |
{ | |
"name": "GET_TASKS", | |
"api_level": "Added in API level 1 Deprecated in API level 21", | |
"description": "This constant was deprecated in API level 21. No longer enforced.", | |
"protection_level": null, | |
"constant_value": "android.permission.GET_TASKS" | |
}, | |
{ | |
"name": "GLOBAL_SEARCH", | |
"api_level": "Added in API level 4", | |
"description": "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.", | |
"protection_level": [ | |
"signature", | |
"privileged" | |
], | |
"constant_value": "android.permission.GLOBAL_SEARCH" | |
}, | |
{ | |
"name": "HIDE_OVERLAY_WINDOWS", | |
"api_level": "Added in API level 31", | |
"description": "Allows an app to prevent non-system-overlay windows from being drawn on top of it", | |
"protection_level": null, | |
"constant_value": "android.permission.HIDE_OVERLAY_WINDOWS" | |
}, | |
{ | |
"name": "HIGH_SAMPLING_RATE_SENSORS", | |
"api_level": "Added in API level 31", | |
"description": "Allows an app to access sensor data with a sampling rate greater than 200 Hz.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.HIGH_SAMPLING_RATE_SENSORS" | |
}, | |
{ | |
"name": "INSTALL_LOCATION_PROVIDER", | |
"api_level": "Added in API level 4", | |
"description": "Allows an application to install a location provider into the Location Manager. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.INSTALL_LOCATION_PROVIDER" | |
}, | |
{ | |
"name": "INSTALL_PACKAGES", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to install packages. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.INSTALL_PACKAGES" | |
}, | |
{ | |
"name": "INSTALL_SHORTCUT", | |
"api_level": "Added in API level 19", | |
"description": "Allows an application to install a shortcut in Launcher. In Android O (API level 26) and higher, the INSTALL_SHORTCUT broadcast no longer has any effect on your app because it's a private, implicit broadcast. Instead, you should create an app shortcut by using the requestPinShortcut() method from the ShortcutManager class.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "com.android.launcher.permission.INSTALL_SHORTCUT" | |
}, | |
{ | |
"name": "INSTANT_APP_FOREGROUND_SERVICE", | |
"api_level": "Added in API level 26", | |
"description": "Allows an instant app to create foreground services.", | |
"protection_level": [ | |
"signature", | |
"development", | |
"instant", | |
"appop" | |
], | |
"constant_value": "android.permission.INSTANT_APP_FOREGROUND_SERVICE" | |
}, | |
{ | |
"name": "INTERACT_ACROSS_PROFILES", | |
"api_level": "Added in API level 30", | |
"description": "Allows interaction across profiles in the same profile group.", | |
"protection_level": null, | |
"constant_value": "android.permission.INTERACT_ACROSS_PROFILES" | |
}, | |
{ | |
"name": "INTERNET", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to open network sockets.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.INTERNET" | |
}, | |
{ | |
"name": "KILL_BACKGROUND_PROCESSES", | |
"api_level": "Added in API level 8", | |
"description": "Allows an application to call ActivityManager.killBackgroundProcesses(String). As of Android version Build.VERSION_CODES.UPSIDE_DOWN_CAKE, the ActivityManager.killBackgroundProcesses(String) is no longer available to third party applications. For backwards compatibility, the background processes of the caller's own package will still be killed when calling this API. If the caller has the system permission KILL_ALL_BACKGROUND_PROCESSES, other processes will be killed too.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.KILL_BACKGROUND_PROCESSES" | |
}, | |
{ | |
"name": "LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to capture screen content to perform a screenshot using the intent action Intent.ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE. Intended for use by ROLE_NOTES only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE" | |
}, | |
{ | |
"name": "LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK", | |
"api_level": "Added in API level 32", | |
"description": "An application needs this permission for Settings.ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY to show its Activity embedded in Settings app.", | |
"protection_level": null, | |
"constant_value": "android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK" | |
}, | |
{ | |
"name": "LOADER_USAGE_STATS", | |
"api_level": "Added in API level 30", | |
"description": "Allows a data loader to read a package's access logs. The access logs contain the set of pages referenced over time. Declaring the permission implies intention to use the API and the user of the device can grant permission through the Settings application. A data loader has to be the one which provides data to install an app. A data loader has to have both permission:LOADER_USAGE_STATS AND appop:LOADER_USAGE_STATS allowed to be able to access the read logs.", | |
"protection_level": [ | |
"signature", | |
"privileged", | |
"appop" | |
], | |
"constant_value": "android.permission.LOADER_USAGE_STATS" | |
}, | |
{ | |
"name": "LOCATION_HARDWARE", | |
"api_level": "Added in API level 18", | |
"description": "Allows an application to use location features in hardware, such as the geofencing api. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.LOCATION_HARDWARE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_LOCK_STATE", | |
"api_level": "Added in API level 34", | |
"description": "Allows financed device kiosk apps to perform actions on the Device Lock service Intended for use by the FINANCED_DEVICE_KIOSK role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_LOCK_STATE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_ACCESSIBILITY", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage policy related to accessibility. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_ACCESSIBILITY" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_ACCOUNT_MANAGEMENT", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to account management. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_ACCOUNT_MANAGEMENT" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_ACROSS_USERS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set device policies outside the current user that are required for securing device ownership without accessing user data. Holding this permission allows the use of other held MANAGE_DEVICE_POLICY_* permissions across all users on the device provided they do not grant access to user data. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set device policies outside the current user. Fuller form of MANAGE_DEVICE_POLICY_ACROSS_USERS that removes the restriction on accessing user data. Holding this permission allows the use of any other held MANAGE_DEVICE_POLICY_* permissions across all users on the device. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set device policies outside the current user that are critical for securing data within the current user. Holding this permission allows the use of other held MANAGE_DEVICE_POLICY_* permissions across all users on the device provided they are required for securing data within the current user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_AIRPLANE_MODE", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to airplane mode. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_AIRPLANE_MODE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_APPS_CONTROL", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage policy regarding modifying applications. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_APPS_CONTROL" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_APP_FUNCTIONS", | |
"api_level": "Added in Android Baklava", | |
"description": "Allows an application to manage policy related to AppFunctions.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_APP_FUNCTIONS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_APP_RESTRICTIONS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage application restrictions. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_APP_RESTRICTIONS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_APP_USER_DATA", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage policy related to application user data. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_APP_USER_DATA" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_ASSIST_CONTENT", | |
"api_level": "Added in API level 35", | |
"description": "Allows an application to set policy related to sending assist content to a privileged app such as the Assistant app. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_ASSIST_CONTENT" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_AUDIO_OUTPUT", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to audio output. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_AUDIO_OUTPUT" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_AUTOFILL", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to autofill. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_AUTOFILL" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_BACKUP_SERVICE", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage backup service policy. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_BACKUP_SERVICE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_BLOCK_UNINSTALL", | |
"api_level": "Added in API level 35", | |
"description": "Allows an application to manage policy related to block package uninstallation. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_BLOCK_UNINSTALL" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_BLUETOOTH", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to bluetooth. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_BLUETOOTH" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_BUGREPORT", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to request bugreports with user consent. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_BUGREPORT" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_CALLS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage calling policy. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_CALLS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_CAMERA", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to restricting a user's ability to use or enable and disable the camera. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_CAMERA" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_CAMERA_TOGGLE", | |
"api_level": "Added in API level 35", | |
"description": "Allows an application to manage policy related to camera toggle. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_CAMERA_TOGGLE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_CERTIFICATES", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to certificates. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_CERTIFICATES" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_COMMON_CRITERIA_MODE", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage policy related to common criteria mode. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_COMMON_CRITERIA_MODE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_CONTENT_PROTECTION", | |
"api_level": "Added in API level 35", | |
"description": "Allows an application to manage policy related to content protection.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_CONTENT_PROTECTION" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage debugging features policy. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_DEFAULT_SMS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to the default sms application. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_DEFAULT_SMS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_DEVICE_IDENTIFIERS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage policy related to device identifiers. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_DEVICE_IDENTIFIERS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_DISPLAY", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to the display. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_DISPLAY" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_FACTORY_RESET", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to factory reset. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_FACTORY_RESET" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_FUN", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to fun. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_FUN" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_INPUT_METHODS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to input methods. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_INPUT_METHODS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage installing from unknown sources policy. MANAGE_SECURITY_CRITICAL_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_KEEP_UNINSTALLED_PACKAGES", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to keeping uninstalled packages. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_KEEP_UNINSTALLED_PACKAGES" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_KEYGUARD", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage policy related to keyguard. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_KEYGUARD" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_LOCALE", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to locale. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_LOCALE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_LOCATION", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to location. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_LOCATION" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_LOCK", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to lock a profile or the device with the appropriate cross-user permission. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_LOCK" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_LOCK_CREDENTIALS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to lock credentials. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_LOCK_CREDENTIALS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_LOCK_TASK", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage lock task policy. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_LOCK_TASK" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS", | |
"api_level": "Added in API level 35", | |
"description": "Allows an application to set policy related to subscriptions downloaded by an admin. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_METERED_DATA", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage policy related to metered data. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_METERED_DATA" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_MICROPHONE", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to restricting a user's ability to use or enable and disable the microphone. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_MICROPHONE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_MICROPHONE_TOGGLE", | |
"api_level": "Added in API level 35", | |
"description": "Allows an application to manage policy related to microphone toggle. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_MICROPHONE_TOGGLE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_MOBILE_NETWORK", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to mobile networks. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_MOBILE_NETWORK" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_MODIFY_USERS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage policy preventing users from modifying users. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_MODIFY_USERS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_MTE", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage policy related to the Memory Tagging Extension (MTE). Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_MTE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_NEARBY_COMMUNICATION", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to nearby communications (e.g. Beam and nearby streaming). Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_NEARBY_COMMUNICATION" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_NETWORK_LOGGING", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to network logging. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_NETWORK_LOGGING" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_ORGANIZATION_IDENTITY", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage the identity of the managing organization. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_ORGANIZATION_IDENTITY" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_OVERRIDE_APN", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to override APNs. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_OVERRIDE_APN" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_PACKAGE_STATE", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to hiding and suspending packages. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_PACKAGE_STATE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_PHYSICAL_MEDIA", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to physical media. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_PHYSICAL_MEDIA" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_PRINTING", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to printing. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_PRINTING" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_PRIVATE_DNS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to private DNS. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_PRIVATE_DNS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_PROFILES", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to profiles. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_PROFILES" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_PROFILE_INTERACTION", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to interacting with profiles (e.g. Disallowing cross-profile copy and paste). Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_PROFILE_INTERACTION" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_PROXY", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set a network-independent global HTTP proxy. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_PROXY" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application query system updates. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_RESET_PASSWORD", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to force set a new device unlock password or a managed profile challenge on current user. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_RESET_PASSWORD" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_RESTRICT_PRIVATE_DNS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to restricting the user from configuring private DNS. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_RESTRICT_PRIVATE_DNS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set the grant state of runtime permissions on packages. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_RUN_IN_BACKGROUND", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to users running in the background. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_RUN_IN_BACKGROUND" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_SAFE_BOOT", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage safe boot policy. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_SAFE_BOOT" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_SCREEN_CAPTURE", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to screen capture. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_SCREEN_CAPTURE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_SCREEN_CONTENT", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to the usage of the contents of the screen. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_SCREEN_CONTENT" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_SECURITY_LOGGING", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to security logging. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_SECURITY_LOGGING" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_SETTINGS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to settings. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_SETTINGS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_SMS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to sms. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_SMS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_STATUS_BAR", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to the status bar. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_STATUS_BAR" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_SUPPORT_MESSAGE", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set support messages for when a user action is affected by an active policy. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_SUPPORT_MESSAGE" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_SUSPEND_PERSONAL_APPS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to suspending personal apps. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_SUSPEND_PERSONAL_APPS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_SYSTEM_APPS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage policy related to system apps. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_SYSTEM_APPS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_SYSTEM_DIALOGS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to system dialogs. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_SYSTEM_DIALOGS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_SYSTEM_UPDATES", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to system updates. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_SYSTEM_UPDATES" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_THREAD_NETWORK", | |
"api_level": "Added in Android Baklava", | |
"description": "Allows an application to set policy related to Thread network. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_THREAD_NETWORK" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_TIME", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage device policy relating to time. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_TIME" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_USB_DATA_SIGNALLING", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to usb data signalling. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_USB_DATA_SIGNALLING" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_USB_FILE_TRANSFER", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to usb file transfers. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_USB_FILE_TRANSFER" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_USERS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to users. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_USERS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_VPN", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to VPNs. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_VPN" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_WALLPAPER", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to the wallpaper. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_WALLPAPER" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_WIFI", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to Wifi. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_WIFI" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_WINDOWS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to set policy related to windows. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_WINDOWS" | |
}, | |
{ | |
"name": "MANAGE_DEVICE_POLICY_WIPE_DATA", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to manage policy related to wiping data. Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected by this permission on users different to the calling user. Intended for use by the DEVICE_POLICY_MANAGEMENT role only.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.MANAGE_DEVICE_POLICY_WIPE_DATA" | |
}, | |
{ | |
"name": "MANAGE_DOCUMENTS", | |
"api_level": "Added in API level 19", | |
"description": "Allows an application to manage access to documents, usually as part of a document picker. This permission should only be requested by the platform document management app. This permission cannot be granted to third-party apps.", | |
"protection_level": null, | |
"constant_value": "android.permission.MANAGE_DOCUMENTS" | |
}, | |
{ | |
"name": "MANAGE_EXTERNAL_STORAGE", | |
"api_level": "Added in API level 30", | |
"description": "Allows an application a broad access to external storage in scoped storage. Intended to be used by few apps that need to manage files on behalf of the users.", | |
"protection_level": [ | |
"signature", | |
"appop", | |
"preinstalled" | |
], | |
"constant_value": "android.permission.MANAGE_EXTERNAL_STORAGE" | |
}, | |
{ | |
"name": "MANAGE_MEDIA", | |
"api_level": "Added in API level 31", | |
"description": "Allows an application to modify and delete media files on this device or any connected storage device without user confirmation. Applications must already be granted the READ_EXTERNAL_STORAGE or MANAGE_EXTERNAL_STORAGE} permissions for this permission to take effect. Even if applications are granted this permission, if applications want to modify or delete media files, they also must get the access by calling MediaStore.createWriteRequest(ContentResolver, Collection), MediaStore.createDeleteRequest(ContentResolver, Collection), or MediaStore.createTrashRequest(ContentResolver, Collection, boolean). This permission doesn't give read or write access directly. It only prevents the user confirmation dialog for these requests. If applications are not granted ACCESS_MEDIA_LOCATION, the system also pops up the user confirmation dialog for the write request.", | |
"protection_level": [ | |
"signature", | |
"appop", | |
"preinstalled" | |
], | |
"constant_value": "android.permission.MANAGE_MEDIA" | |
}, | |
{ | |
"name": "MANAGE_ONGOING_CALLS", | |
"api_level": "Added in API level 31", | |
"description": "Allows to query ongoing call details and manage ongoing calls", | |
"protection_level": [ | |
"signature", | |
"appop" | |
], | |
"constant_value": "android.permission.MANAGE_ONGOING_CALLS" | |
}, | |
{ | |
"name": "MANAGE_OWN_CALLS", | |
"api_level": "Added in API level 26", | |
"description": "Allows a calling application which manages its own calls through the self-managed ConnectionService APIs. See PhoneAccount.CAPABILITY_SELF_MANAGED for more information on the self-managed ConnectionService APIs.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.MANAGE_OWN_CALLS" | |
}, | |
{ | |
"name": "MANAGE_WIFI_INTERFACES", | |
"api_level": "Added in API level 33", | |
"description": "Allows applications to get notified when a Wi-Fi interface request cannot be satisfied without tearing down one or more other interfaces, and provide a decision whether to approve the request or reject it. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.MANAGE_WIFI_INTERFACES" | |
}, | |
{ | |
"name": "MANAGE_WIFI_NETWORK_SELECTION", | |
"api_level": "Added in API level 33", | |
"description": "This permission is used to let OEMs grant their trusted app access to a subset of privileged wifi APIs to improve wifi performance. Allows applications to manage Wi-Fi network selection related features such as enable or disable global auto-join, modify connectivity scan intervals, and approve Wi-Fi Direct connections. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.MANAGE_WIFI_NETWORK_SELECTION" | |
}, | |
{ | |
"name": "MASTER_CLEAR", | |
"api_level": "Added in API level 1", | |
"description": "Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.MASTER_CLEAR" | |
}, | |
{ | |
"name": "MEDIA_CONTENT_CONTROL", | |
"api_level": "Added in API level 19", | |
"description": "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", | |
"protection_level": null, | |
"constant_value": "android.permission.MEDIA_CONTENT_CONTROL" | |
}, | |
{ | |
"name": "MEDIA_ROUTING_CONTROL", | |
"api_level": "Added in API level 35", | |
"description": "Allows an application to control the routing of media apps. Only for use by role COMPANION_DEVICE_WATCH", | |
"protection_level": null, | |
"constant_value": "android.permission.MEDIA_ROUTING_CONTROL" | |
}, | |
{ | |
"name": "MODIFY_AUDIO_SETTINGS", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to modify global audio settings.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.MODIFY_AUDIO_SETTINGS" | |
}, | |
{ | |
"name": "MODIFY_PHONE_STATE", | |
"api_level": "Added in API level 1", | |
"description": "Allows modification of the telephony state - power on, mmi, etc. Does not include placing calls. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.MODIFY_PHONE_STATE" | |
}, | |
{ | |
"name": "MOUNT_FORMAT_FILESYSTEMS", | |
"api_level": "Added in API level 3", | |
"description": "Allows formatting file systems for removable storage. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.MOUNT_FORMAT_FILESYSTEMS" | |
}, | |
{ | |
"name": "MOUNT_UNMOUNT_FILESYSTEMS", | |
"api_level": "Added in API level 1", | |
"description": "Allows mounting and unmounting file systems for removable storage. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" | |
}, | |
{ | |
"name": "NEARBY_WIFI_DEVICES", | |
"api_level": "Added in API level 33", | |
"description": "Required to be able to advertise and connect to nearby devices via Wi-Fi.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.NEARBY_WIFI_DEVICES" | |
}, | |
{ | |
"name": "NFC", | |
"api_level": "Added in API level 9", | |
"description": "Allows applications to perform I/O operations over NFC.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.NFC" | |
}, | |
{ | |
"name": "NFC_PREFERRED_PAYMENT_INFO", | |
"api_level": "Added in API level 30", | |
"description": "Allows applications to receive NFC preferred payment service information.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.NFC_PREFERRED_PAYMENT_INFO" | |
}, | |
{ | |
"name": "NFC_TRANSACTION_EVENT", | |
"api_level": "Added in API level 28", | |
"description": "Allows applications to receive NFC transaction events.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.NFC_TRANSACTION_EVENT" | |
}, | |
{ | |
"name": "OVERRIDE_WIFI_CONFIG", | |
"api_level": "Added in API level 33", | |
"description": "Allows an application to modify any wifi configuration, even if created by another application. Once reconfigured the original creator cannot make any further modifications. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.OVERRIDE_WIFI_CONFIG" | |
}, | |
{ | |
"name": "PACKAGE_USAGE_STATS", | |
"api_level": "Added in API level 23", | |
"description": "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.", | |
"protection_level": [ | |
"signature", | |
"privileged", | |
"development", | |
"appop", | |
"retailDemo" | |
], | |
"constant_value": "android.permission.PACKAGE_USAGE_STATS" | |
}, | |
{ | |
"name": "PERSISTENT_ACTIVITY", | |
"api_level": "Added in API level 1 Deprecated in API level 15", | |
"description": "This constant was deprecated in API level 15. This functionality will be removed in the future; please do not use. Allow an application to make its activities persistent.", | |
"protection_level": null, | |
"constant_value": "android.permission.PERSISTENT_ACTIVITY" | |
}, | |
{ | |
"name": "POST_NOTIFICATIONS", | |
"api_level": "Added in API level 33", | |
"description": "Allows an app to post notifications", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.POST_NOTIFICATIONS" | |
}, | |
{ | |
"name": "PROCESS_OUTGOING_CALLS", | |
"api_level": "Added in API level 1 Deprecated in API level 29", | |
"description": "This constant was deprecated in API level 29. Applications should use CallRedirectionService instead of the Intent.ACTION_NEW_OUTGOING_CALL broadcast. 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. This is a hard restricted permission which cannot be held by an app until the installer on record allowlists the permission. For more details see PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions(Set).", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.PROCESS_OUTGOING_CALLS" | |
}, | |
{ | |
"name": "PROVIDE_OWN_AUTOFILL_SUGGESTIONS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to display its suggestions using the autofill framework. For now, this permission is only granted to the Browser application.", | |
"protection_level": [ | |
"internal", | |
"role" | |
], | |
"constant_value": "android.permission.PROVIDE_OWN_AUTOFILL_SUGGESTIONS" | |
}, | |
{ | |
"name": "PROVIDE_REMOTE_CREDENTIALS", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to be able to store and retrieve credentials from a remote device.", | |
"protection_level": [ | |
"signature", | |
"privileged", | |
"role" | |
], | |
"constant_value": "android.permission.PROVIDE_REMOTE_CREDENTIALS" | |
}, | |
{ | |
"name": "QUERY_ALL_PACKAGES", | |
"api_level": "Added in API level 30", | |
"description": "Allows query of any normal app on the device, regardless of manifest declarations.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.QUERY_ALL_PACKAGES" | |
}, | |
{ | |
"name": "RANGING", | |
"api_level": "Added in Android Baklava", | |
"description": "Required to be able to range to devices using generic ranging module.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.RANGING" | |
}, | |
{ | |
"name": "READ_ASSISTANT_APP_SEARCH_DATA", | |
"api_level": "Added in API level 33", | |
"description": "Allows an application to query over global data in AppSearch that's visible to the ASSISTANT role.", | |
"protection_level": null, | |
"constant_value": "android.permission.READ_ASSISTANT_APP_SEARCH_DATA" | |
}, | |
{ | |
"name": "READ_BASIC_PHONE_STATE", | |
"api_level": "Added in API level 33", | |
"description": "Allows read only access to phone state with a non dangerous permission, including the information like cellular network type, software version.", | |
"protection_level": null, | |
"constant_value": "android.permission.READ_BASIC_PHONE_STATE" | |
}, | |
{ | |
"name": "READ_CALENDAR", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to read the user's calendar data.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.READ_CALENDAR" | |
}, | |
{ | |
"name": "READ_CALL_LOG", | |
"api_level": "Added in API level 16", | |
"description": "Allows an application to read the user's call log. Note: If your app uses the READ_CONTACTS permission and both your minSdkVersion and targetSdkVersion values are set to 15 or lower, the system implicitly grants your app this permission. If you don't need this permission, be sure your targetSdkVersion is 16 or higher. This is a hard restricted permission which cannot be held by an app until the installer on record allowlists the permission. For more details see PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions(Set).", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.READ_CALL_LOG" | |
}, | |
{ | |
"name": "READ_CONTACTS", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to read the user's contacts data.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.READ_CONTACTS" | |
}, | |
{ | |
"name": "READ_DROPBOX_DATA", | |
"api_level": "Added in API level 35", | |
"description": "Allows an application to access the data in Dropbox. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.READ_DROPBOX_DATA" | |
}, | |
{ | |
"name": "READ_EXTERNAL_STORAGE", | |
"api_level": "Added in API level 16", | |
"description": "Allows an application to read from external storage. Note: Starting in API level 33, this permission has no effect. If your app accesses other apps' media files, request one or more of these permissions instead: READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_AUDIO. Learn more about the storage permissions that are associated with media files. This permission is enforced starting in API level 19. Before API level 19, this permission is not enforced and all apps still have access to read from external storage. You can test your app with the permission enforced by enabling Protect USB storage under Developer options in the Settings app on a device running Android 4.1 or higher. Also starting in API level 19, this permission is not required to read or write files in your application-specific directories returned by Context.getExternalFilesDir(String) and Context.getExternalCacheDir(). Starting in API level 29, apps don't need to request this permission to access files in their app-specific directory on external storage, or their own files in the MediaStore. Apps shouldn't request this permission unless they need to access other apps' files in the MediaStore. Read more about these changes in the scoped storage section of the developer documentation. If both your minSdkVersion and targetSdkVersion values are set to 3 or lower, the system implicitly grants your app this permission. If you don't need this permission, be sure your targetSdkVersion is 4 or higher. This is a soft restricted permission which cannot be held by an app it its full form until the installer on record allowlists the permission. Specifically, if the permission is allowlisted the holder app can access external storage and the visual and aural media collections while if the permission is not allowlisted the holder app can only access to the visual and aural medial collections. Also the permission is immutably restricted meaning that the allowlist state can be specified only at install time and cannot change until the app is installed. For more details see PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions(Set).", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.READ_EXTERNAL_STORAGE" | |
}, | |
{ | |
"name": "READ_HOME_APP_SEARCH_DATA", | |
"api_level": "Added in API level 33", | |
"description": "Allows an application to query over global data in AppSearch that's visible to the HOME role.", | |
"protection_level": null, | |
"constant_value": "android.permission.READ_HOME_APP_SEARCH_DATA" | |
}, | |
{ | |
"name": "READ_INPUT_STATE", | |
"api_level": "Added in API level 1 Deprecated in API level 16", | |
"description": "This constant was deprecated in API level 16. The API that used this permission has been removed. Allows an application to retrieve the current state of keys and switches. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.READ_INPUT_STATE" | |
}, | |
{ | |
"name": "READ_LOGS", | |
"api_level": "Added in API level 1", | |
"description": "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.", | |
"protection_level": null, | |
"constant_value": "android.permission.READ_LOGS" | |
}, | |
{ | |
"name": "READ_MEDIA_AUDIO", | |
"api_level": "Added in API level 33", | |
"description": "Allows an application to read audio files from external storage. This permission is enforced starting in API level Build.VERSION_CODES.TIRAMISU. An app which targets Build.VERSION_CODES.TIRAMISU or higher and needs to read audio files from external storage must hold this permission; READ_EXTERNAL_STORAGE is not required. For apps with a targetSdkVersion of Build.VERSION_CODES.S_V2 or lower, the READ_EXTERNAL_STORAGE permission is required, instead, to read audio files.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.READ_MEDIA_AUDIO" | |
}, | |
{ | |
"name": "READ_MEDIA_IMAGES", | |
"api_level": "Added in API level 33", | |
"description": "Allows an application to read image files from external storage. This permission is enforced starting in API level Build.VERSION_CODES.TIRAMISU. An app which targets Build.VERSION_CODES.TIRAMISU or higher and needs to read image files from external storage must hold this permission; READ_EXTERNAL_STORAGE is not required. For apps with a targetSdkVersion of Build.VERSION_CODES.S_V2 or lower, the READ_EXTERNAL_STORAGE permission is required, instead, to read image files.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.READ_MEDIA_IMAGES" | |
}, | |
{ | |
"name": "READ_MEDIA_VIDEO", | |
"api_level": "Added in API level 33", | |
"description": "Allows an application to read video files from external storage. This permission is enforced starting in API level Build.VERSION_CODES.TIRAMISU. An app which targets Build.VERSION_CODES.TIRAMISU or higher and needs to read video files from external storage must hold this permission; READ_EXTERNAL_STORAGE is not required. For apps with a targetSdkVersion of Build.VERSION_CODES.S_V2 or lower, the READ_EXTERNAL_STORAGE permission is required, instead, to read video files.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.READ_MEDIA_VIDEO" | |
}, | |
{ | |
"name": "READ_MEDIA_VISUAL_USER_SELECTED", | |
"api_level": "Added in API level 34", | |
"description": "Allows an application to read image or video files from external storage that a user has selected via the permission prompt photo picker. Apps can check this permission to verify that a user has decided to use the photo picker, instead of granting access to READ_MEDIA_IMAGES or READ_MEDIA_VIDEO. It does not prevent apps from accessing the standard photo picker manually. This permission should be requested alongside READ_MEDIA_IMAGES and/or READ_MEDIA_VIDEO, depending on which type of media is desired. This permission will be automatically added to an app's manifest if the app requests READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, or ACCESS_MEDIA_LOCATION regardless of target SDK. If an app does not request this permission, then the grant dialog will return `PERMISSION_GRANTED` for READ_MEDIA_IMAGES and/or READ_MEDIA_VIDEO, but the app will only have access to the media selected by the user. This false grant state will persist until the app goes into the background.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.READ_MEDIA_VISUAL_USER_SELECTED" | |
}, | |
{ | |
"name": "READ_NEARBY_STREAMING_POLICY", | |
"api_level": "Added in API level 33", | |
"description": "Allows an application to read nearby streaming policy. The policy controls whether to allow the device to stream its notifications and apps to nearby devices. Applications that are not the device owner will need this permission to call DevicePolicyManager.getNearbyNotificationStreamingPolicy() or DevicePolicyManager.getNearbyAppStreamingPolicy().", | |
"protection_level": null, | |
"constant_value": "android.permission.READ_NEARBY_STREAMING_POLICY" | |
}, | |
{ | |
"name": "READ_PHONE_NUMBERS", | |
"api_level": "Added in API level 26", | |
"description": "Allows read access to the device's phone number(s), which is exposed to instant applications.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.READ_PHONE_NUMBERS" | |
}, | |
{ | |
"name": "READ_PHONE_STATE", | |
"api_level": "Added in API level 1", | |
"description": "Allows read only access to phone state, including the current cellular network information, the status of any ongoing calls, and a list of any PhoneAccounts registered on the device. Note: If both your minSdkVersion and targetSdkVersion values are set to 3 or lower, the system implicitly grants your app this permission. If you don't need this permission, be sure your targetSdkVersion is 4 or higher.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.READ_PHONE_STATE" | |
}, | |
{ | |
"name": "READ_PRECISE_PHONE_STATE", | |
"api_level": "Added in API level 30", | |
"description": "Allows read only access to precise phone state. Allows reading of detailed information about phone state for special-use applications such as dialers, carrier applications, or ims applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.READ_PRECISE_PHONE_STATE" | |
}, | |
{ | |
"name": "READ_SMS", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to read SMS messages. This is a hard restricted permission which cannot be held by an app until the installer on record allowlists the permission. For more details see PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions(Set).", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.READ_SMS" | |
}, | |
{ | |
"name": "READ_SYNC_SETTINGS", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to read the sync settings.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.READ_SYNC_SETTINGS" | |
}, | |
{ | |
"name": "READ_SYNC_STATS", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to read the sync stats.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.READ_SYNC_STATS" | |
}, | |
{ | |
"name": "READ_VOICEMAIL", | |
"api_level": "Added in API level 21", | |
"description": "Allows an application to read voicemails in the system.", | |
"protection_level": [ | |
"signature", | |
"privileged", | |
"role" | |
], | |
"constant_value": "com.android.voicemail.permission.READ_VOICEMAIL" | |
}, | |
{ | |
"name": "REBOOT", | |
"api_level": "Added in API level 1", | |
"description": "Required to be able to reboot the device. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.REBOOT" | |
}, | |
{ | |
"name": "RECEIVE_BOOT_COMPLETED", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to receive the Intent.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.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.RECEIVE_BOOT_COMPLETED" | |
}, | |
{ | |
"name": "RECEIVE_MMS", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to monitor incoming MMS messages. This is a hard restricted permission which cannot be held by an app until the installer on record allowlists the permission. For more details see PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions(Set).", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.RECEIVE_MMS" | |
}, | |
{ | |
"name": "RECEIVE_SMS", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to receive SMS messages. This is a hard restricted permission which cannot be held by an app until the installer on record allowlists the permission. For more details see PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions(Set).", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.RECEIVE_SMS" | |
}, | |
{ | |
"name": "RECEIVE_WAP_PUSH", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to receive WAP push messages. This is a hard restricted permission which cannot be held by an app until the installer on record allowlists the permission. For more details see PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions(Set).", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.RECEIVE_WAP_PUSH" | |
}, | |
{ | |
"name": "RECORD_AUDIO", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to record audio.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.RECORD_AUDIO" | |
}, | |
{ | |
"name": "REORDER_TASKS", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to change the Z-order of tasks.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.REORDER_TASKS" | |
}, | |
{ | |
"name": "REQUEST_COMPANION_PROFILE_APP_STREAMING", | |
"api_level": "Added in API level 33", | |
"description": "Allows application to request to be associated with a virtual device capable of streaming Android applications (AssociationRequest.DEVICE_PROFILE_APP_STREAMING) by CompanionDeviceManager. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.REQUEST_COMPANION_PROFILE_APP_STREAMING" | |
}, | |
{ | |
"name": "REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION", | |
"api_level": "Added in API level 33", | |
"description": "Allows application to request to be associated with a vehicle head unit capable of automotive projection (AssociationRequest.DEVICE_PROFILE_AUTOMOTIVE_PROJECTION) by CompanionDeviceManager. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION" | |
}, | |
{ | |
"name": "REQUEST_COMPANION_PROFILE_COMPUTER", | |
"api_level": "Added in API level 33", | |
"description": "Allows application to request to be associated with a computer to share functionality and/or data with other devices, such as notifications, photos and media (AssociationRequest.DEVICE_PROFILE_COMPUTER) by CompanionDeviceManager. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.REQUEST_COMPANION_PROFILE_COMPUTER" | |
}, | |
{ | |
"name": "REQUEST_COMPANION_PROFILE_GLASSES", | |
"api_level": "Added in API level 34", | |
"description": "Allows app to request to be associated with a device via CompanionDeviceManager as \"glasses", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.REQUEST_COMPANION_PROFILE_GLASSES" | |
}, | |
{ | |
"name": "REQUEST_COMPANION_PROFILE_NEARBY_DEVICE_STREAMING", | |
"api_level": "Added in API level 34", | |
"description": "Allows application to request to stream content from an Android host to a nearby device (AssociationRequest.DEVICE_PROFILE_NEARBY_DEVICE_STREAMING) by CompanionDeviceManager. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.REQUEST_COMPANION_PROFILE_NEARBY_DEVICE_STREAMING" | |
}, | |
{ | |
"name": "REQUEST_COMPANION_PROFILE_WATCH", | |
"api_level": "Added in API level 31", | |
"description": "Allows app to request to be associated with a device via CompanionDeviceManager as a \"watch", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.REQUEST_COMPANION_PROFILE_WATCH" | |
}, | |
{ | |
"name": "REQUEST_COMPANION_RUN_IN_BACKGROUND", | |
"api_level": "Added in API level 26", | |
"description": "Allows a companion app to run in the background. This permission implies REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND, and allows to start a foreground service from the background. If an app does not have to run in the background, but only needs to start a foreground service from the background, consider using REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND, which is less powerful.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND" | |
}, | |
{ | |
"name": "REQUEST_COMPANION_SELF_MANAGED", | |
"api_level": "Added in API level 33", | |
"description": "Allows an application to create a \"self-managed\" association.", | |
"protection_level": null, | |
"constant_value": "android.permission.REQUEST_COMPANION_SELF_MANAGED" | |
}, | |
{ | |
"name": "REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND", | |
"api_level": "Added in API level 31", | |
"description": "Allows a companion app to start a foreground service from the background.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND" | |
}, | |
{ | |
"name": "REQUEST_COMPANION_USE_DATA_IN_BACKGROUND", | |
"api_level": "Added in API level 26", | |
"description": "Allows a companion app to use data in the background.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND" | |
}, | |
{ | |
"name": "REQUEST_DELETE_PACKAGES", | |
"api_level": "Added in API level 26", | |
"description": "Allows an application to request deleting packages. Apps targeting APIs Build.VERSION_CODES.P or greater must hold this permission in order to use Intent.ACTION_UNINSTALL_PACKAGE or PackageInstaller.uninstall(VersionedPackage, IntentSender).", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.REQUEST_DELETE_PACKAGES" | |
}, | |
{ | |
"name": "REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", | |
"api_level": "Added in API level 23", | |
"description": "Permission an application must hold in order to use Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" | |
}, | |
{ | |
"name": "REQUEST_INSTALL_PACKAGES", | |
"api_level": "Added in API level 23", | |
"description": "Allows an application to request installing packages. Apps targeting APIs greater than 25 must hold this permission in order to use Intent.ACTION_INSTALL_PACKAGE.", | |
"protection_level": [ | |
"signature" | |
], | |
"constant_value": "android.permission.REQUEST_INSTALL_PACKAGES" | |
}, | |
{ | |
"name": "REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE", | |
"api_level": "Added in API level 31", | |
"description": "Allows an application to subscribe to notifications about the presence status change of their associated companion device", | |
"protection_level": null, | |
"constant_value": "android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE" | |
}, | |
{ | |
"name": "REQUEST_OBSERVE_DEVICE_UUID_PRESENCE", | |
"api_level": "Added in Android Baklava", | |
"description": "Allows an application to subscribe to notifications about the nearby devices' presence status change base on the UUIDs. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.REQUEST_OBSERVE_DEVICE_UUID_PRESENCE" | |
}, | |
{ | |
"name": "REQUEST_PASSWORD_COMPLEXITY", | |
"api_level": "Added in API level 29", | |
"description": "Allows an application to request the screen lock complexity and prompt users to update the screen lock to a certain complexity level.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.REQUEST_PASSWORD_COMPLEXITY" | |
}, | |
{ | |
"name": "RESTART_PACKAGES", | |
"api_level": "Added in API level 1 Deprecated in API level 15", | |
"description": "This constant was deprecated in API level 15. The ActivityManager.restartPackage(String) API is no longer supported.", | |
"protection_level": null, | |
"constant_value": "android.permission.RESTART_PACKAGES" | |
}, | |
{ | |
"name": "RUN_USER_INITIATED_JOBS", | |
"api_level": "Added in API level 34", | |
"description": "Allows applications to use the user-initiated jobs API. For more details see JobInfo.Builder.setUserInitiated(boolean).", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.RUN_USER_INITIATED_JOBS" | |
}, | |
{ | |
"name": "SCHEDULE_EXACT_ALARM", | |
"api_level": "Added in API level 31", | |
"description": "Allows applications to use exact alarm APIs. This is a special access permission that can be revoked by the system or the user. It should only be used to enable user-facing features that require exact alarms. For more details, please go through the associated developer docs. Apps need to target API Build.VERSION_CODES.S or above to be able to request this permission. Note that apps targeting lower API levels do not need this permission to use exact alarm APIs. Apps that hold this permission and target API Build.VERSION_CODES.TIRAMISU and below always stay in the WORKING_SET or lower standby bucket. If your app relies on exact alarms for core functionality, it can instead request USE_EXACT_ALARM once it targets API Build.VERSION_CODES.TIRAMISU. All apps using exact alarms for secondary features (which should still be user facing) should continue using this permission.", | |
"protection_level": [ | |
"signature", | |
"privileged", | |
"appop" | |
], | |
"constant_value": "android.permission.SCHEDULE_EXACT_ALARM" | |
}, | |
{ | |
"name": "SEND_RESPOND_VIA_MESSAGE", | |
"api_level": "Added in API level 18", | |
"description": "Allows an application (Phone) to send a request to other applications to handle the respond-via-message action during incoming calls. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.SEND_RESPOND_VIA_MESSAGE" | |
}, | |
{ | |
"name": "SEND_SMS", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to send SMS messages. This is a hard restricted permission which cannot be held by an app until the installer on record allowlists the permission. For more details see PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions(Set).", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.SEND_SMS" | |
}, | |
{ | |
"name": "SET_ALARM", | |
"api_level": "Added in API level 9", | |
"description": "Allows an application to broadcast an Intent to set an alarm for the user.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "com.android.alarm.permission.SET_ALARM" | |
}, | |
{ | |
"name": "SET_ALWAYS_FINISH", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to control whether activities are immediately finished when put in the background. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.SET_ALWAYS_FINISH" | |
}, | |
{ | |
"name": "SET_ANIMATION_SCALE", | |
"api_level": "Added in API level 1", | |
"description": "Modify the global animation scaling factor. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.SET_ANIMATION_SCALE" | |
}, | |
{ | |
"name": "SET_BIOMETRIC_DIALOG_ADVANCED", | |
"api_level": "Added in API level 35", | |
"description": "Allows an application to set the advanced features on BiometricDialog (SystemUI), including logo, logo description, and content view with more options button. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.SET_BIOMETRIC_DIALOG_ADVANCED" | |
}, | |
{ | |
"name": "SET_DEBUG_APP", | |
"api_level": "Added in API level 1", | |
"description": "Configure an application for debugging. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.SET_DEBUG_APP" | |
}, | |
{ | |
"name": "SET_PREFERRED_APPLICATIONS", | |
"api_level": "Added in API level 1 Deprecated in API level 15", | |
"description": "This constant was deprecated in API level 15. No longer useful, see PackageManager.addPackageToPreferred(String) for details.", | |
"protection_level": null, | |
"constant_value": "android.permission.SET_PREFERRED_APPLICATIONS" | |
}, | |
{ | |
"name": "SET_PROCESS_LIMIT", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to set the maximum number of (not needed) application processes that can be running. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.SET_PROCESS_LIMIT" | |
}, | |
{ | |
"name": "SET_TIME", | |
"api_level": "Added in API level 8", | |
"description": "Allows applications to set the system time directly. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.SET_TIME" | |
}, | |
{ | |
"name": "SET_TIME_ZONE", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to set the system time zone directly. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.SET_TIME_ZONE" | |
}, | |
{ | |
"name": "SET_WALLPAPER", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to set the wallpaper.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.SET_WALLPAPER" | |
}, | |
{ | |
"name": "SET_WALLPAPER_HINTS", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to set the wallpaper hints.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.SET_WALLPAPER_HINTS" | |
}, | |
{ | |
"name": "SIGNAL_PERSISTENT_PROCESSES", | |
"api_level": "Added in API level 1", | |
"description": "Allow an application to request that a signal be sent to all persistent processes. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.SIGNAL_PERSISTENT_PROCESSES" | |
}, | |
{ | |
"name": "SMS_FINANCIAL_TRANSACTIONS", | |
"api_level": "Added in API level 29 Deprecated in API level 31", | |
"description": "This constant was deprecated in API level 31. The API that used this permission is no longer functional. Allows financial apps to read filtered sms messages.", | |
"protection_level": [ | |
"signature", | |
"appop" | |
], | |
"constant_value": "android.permission.SMS_FINANCIAL_TRANSACTIONS" | |
}, | |
{ | |
"name": "START_FOREGROUND_SERVICES_FROM_BACKGROUND", | |
"api_level": "Added in API level 31", | |
"description": "Allows an application to start foreground services from the background at any time. This permission is not for use by third-party applications, with the only exception being if the app is the default SMS app. Otherwise, it's only usable by privileged apps, app verifier app, and apps with any of the EMERGENCY or SYSTEM GALLERY roles.", | |
"protection_level": null, | |
"constant_value": "android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND" | |
}, | |
{ | |
"name": "START_VIEW_APP_FEATURES", | |
"api_level": "Added in API level 33", | |
"description": "Allows the holder to start the screen with a list of app features.", | |
"protection_level": [ | |
"signature", | |
"installer" | |
], | |
"constant_value": "android.permission.START_VIEW_APP_FEATURES" | |
}, | |
{ | |
"name": "START_VIEW_PERMISSION_USAGE", | |
"api_level": "Added in API level 29", | |
"description": "Allows the holder to start the permission usage screen for an app.", | |
"protection_level": [ | |
"signature", | |
"installer" | |
], | |
"constant_value": "android.permission.START_VIEW_PERMISSION_USAGE" | |
}, | |
{ | |
"name": "STATUS_BAR", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to open, close, or disable the status bar and its icons. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.STATUS_BAR" | |
}, | |
{ | |
"name": "SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE", | |
"api_level": "Added in API level 33", | |
"description": "Allows an application to subscribe to device locked and keyguard locked (i.e., showing) state. Intended for use by ROLE_ASSISTANT, VDM, and signature / privileged apps only.", | |
"protection_level": [ | |
"signature", | |
"privileged", | |
"module", | |
"role" | |
], | |
"constant_value": "android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE" | |
}, | |
{ | |
"name": "SYSTEM_ALERT_WINDOW", | |
"api_level": "Added in API level 1", | |
"description": "Allows an app to create windows using the type WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, shown on top of all other apps. Very few apps should use this permission; these windows are intended for system-level interaction with the user. Note: If the app targets API level 23 or higher, the app user must explicitly grant this permission to the app through a permission management screen. The app requests the user's approval by sending an intent with action Settings.ACTION_MANAGE_OVERLAY_PERMISSION. The app can check whether it has this authorization by calling Settings.canDrawOverlays().", | |
"protection_level": [ | |
"signature", | |
"setup", | |
"appop", | |
"installer", | |
"pre23", | |
"development" | |
], | |
"constant_value": "android.permission.SYSTEM_ALERT_WINDOW" | |
}, | |
{ | |
"name": "TRANSMIT_IR", | |
"api_level": "Added in API level 19", | |
"description": "Allows using the device's IR transmitter, if available.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.TRANSMIT_IR" | |
}, | |
{ | |
"name": "TURN_SCREEN_ON", | |
"api_level": "Added in API level 34", | |
"description": "Allows an app to turn on the screen on, e.g. with PowerManager.ACQUIRE_CAUSES_WAKEUP. Intended to only be used by home automation apps.", | |
"protection_level": null, | |
"constant_value": "android.permission.TURN_SCREEN_ON" | |
}, | |
{ | |
"name": "UNINSTALL_SHORTCUT", | |
"api_level": "Added in API level 19", | |
"description": "Don't use this permission in your app.This permission is no longer supported.", | |
"protection_level": null, | |
"constant_value": "com.android.launcher.permission.UNINSTALL_SHORTCUT" | |
}, | |
{ | |
"name": "UPDATE_DEVICE_STATS", | |
"api_level": "Added in API level 3", | |
"description": "Allows an application to update device statistics. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.UPDATE_DEVICE_STATS" | |
}, | |
{ | |
"name": "UPDATE_PACKAGES_WITHOUT_USER_ACTION", | |
"api_level": "Added in API level 31", | |
"description": "Allows an application to indicate via PackageInstaller.SessionParams.setRequireUserAction(int) that user action should not be required for an app update.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION" | |
}, | |
{ | |
"name": "USE_BIOMETRIC", | |
"api_level": "Added in API level 28", | |
"description": "Allows an app to use device supported biometric modalities.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.USE_BIOMETRIC" | |
}, | |
{ | |
"name": "USE_EXACT_ALARM", | |
"api_level": "Added in API level 33", | |
"description": "Allows apps to use exact alarms just like with SCHEDULE_EXACT_ALARM but without needing to request this permission from the user. This is only intended for use by apps that rely on exact alarms for their core functionality. You should continue using SCHEDULE_EXACT_ALARM if your app needs exact alarms for a secondary feature that users may or may not use within your app. Keep in mind that this is a powerful permission and app stores may enforce policies to audit and review the use of this permission. Such audits may involve removal from the app store if the app is found to be misusing this permission. Apps need to target API Build.VERSION_CODES.TIRAMISU or above to be able to request this permission. Note that only one of USE_EXACT_ALARM or SCHEDULE_EXACT_ALARM should be requested on a device. If your app is already using SCHEDULE_EXACT_ALARM on older SDKs but needs USE_EXACT_ALARM on SDK 33 and above, then SCHEDULE_EXACT_ALARM should be declared with a max-sdk attribute, like: <uses-permission android:name=\"android.permission.SCHEDULE_EXACT_ALARM\" android:maxSdkVersion=\"32\" /> Apps that hold this permission, always stay in the WORKING_SET or lower standby bucket.", | |
"protection_level": null, | |
"constant_value": "android.permission.USE_EXACT_ALARM" | |
}, | |
{ | |
"name": "USE_FINGERPRINT", | |
"api_level": "Added in API level 23 Deprecated in API level 28", | |
"description": "This constant was deprecated in API level 28. Applications should request USE_BIOMETRIC instead Allows an app to use fingerprint hardware.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.USE_FINGERPRINT" | |
}, | |
{ | |
"name": "USE_FULL_SCREEN_INTENT", | |
"api_level": "Added in API level 29", | |
"description": "Required for apps targeting Build.VERSION_CODES.Q that want to use notification full screen intents.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.USE_FULL_SCREEN_INTENT" | |
}, | |
{ | |
"name": "USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER", | |
"api_level": "Added in API level 31", | |
"description": "Allows to read device identifiers and use ICC based authentication like EAP-AKA. Often required in authentication to access the carrier's server and manage services of the subscriber.", | |
"protection_level": [ | |
"signature", | |
"appop" | |
], | |
"constant_value": "android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER" | |
}, | |
{ | |
"name": "USE_SIP", | |
"api_level": "Added in API level 9", | |
"description": "Allows an application to use SIP service.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.USE_SIP" | |
}, | |
{ | |
"name": "UWB_RANGING", | |
"api_level": "Added in API level 31", | |
"description": "Required to be able to range to devices using ultra-wideband.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.UWB_RANGING" | |
}, | |
{ | |
"name": "VIBRATE", | |
"api_level": "Added in API level 1", | |
"description": "Allows access to the vibrator.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.VIBRATE" | |
}, | |
{ | |
"name": "WAKE_LOCK", | |
"api_level": "Added in API level 1", | |
"description": "Allows using PowerManager WakeLocks to keep processor from sleeping or screen from dimming.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.WAKE_LOCK" | |
}, | |
{ | |
"name": "WRITE_APN_SETTINGS", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to write the apn settings and read sensitive fields of an existing apn settings like user and password. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.WRITE_APN_SETTINGS" | |
}, | |
{ | |
"name": "WRITE_CALENDAR", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to write the user's calendar data.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.WRITE_CALENDAR" | |
}, | |
{ | |
"name": "WRITE_CALL_LOG", | |
"api_level": "Added in API level 16", | |
"description": "Allows an application to write and read the user's call log data. Note: If your app uses the WRITE_CONTACTS permission and both your minSdkVersion and targetSdkVersion values are set to 15 or lower, the system implicitly grants your app this permission. If you don't need this permission, be sure your targetSdkVersion is 16 or higher. This is a hard restricted permission which cannot be held by an app until the installer on record allowlists the permission. For more details see PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions(Set).", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.WRITE_CALL_LOG" | |
}, | |
{ | |
"name": "WRITE_CONTACTS", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to write the user's contacts data.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.WRITE_CONTACTS" | |
}, | |
{ | |
"name": "WRITE_EXTERNAL_STORAGE", | |
"api_level": "Added in API level 4", | |
"description": "Allows an application to write to external storage. Note: If your app targets Build.VERSION_CODES.R or higher, this permission has no effect. If your app is on a device that runs API level 19 or higher, you don't need to declare this permission to read and write files in your application-specific directories returned by Context.getExternalFilesDir(String) and Context.getExternalCacheDir(). Learn more about how to modify media files that your app doesn't own, and how to modify non-media files that your app doesn't own. If your app is a file manager and needs broad access to external storage files, then the system must place your app on an allowlist so that you can successfully request the MANAGE_EXTERNAL_STORAGE permission. Learn more about the appropriate use cases for minSdkVersion and targetSdkVersion values are set to 3 or lower, the system implicitly grants your app this permission. If you don't need this permission, be sure your targetSdkVersion is 4 or higher.", | |
"protection_level": [ | |
"dangerous" | |
], | |
"constant_value": "android.permission.WRITE_EXTERNAL_STORAGE" | |
}, | |
{ | |
"name": "WRITE_GSERVICES", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to modify the Google service map. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.WRITE_GSERVICES" | |
}, | |
{ | |
"name": "WRITE_SECURE_SETTINGS", | |
"api_level": "Added in API level 3", | |
"description": "Allows an application to read or write the secure system settings. Not for use by third-party applications.", | |
"protection_level": null, | |
"constant_value": "android.permission.WRITE_SECURE_SETTINGS" | |
}, | |
{ | |
"name": "WRITE_SETTINGS", | |
"api_level": "Added in API level 1", | |
"description": "Allows an application to read or write the system settings. Note: If the app targets API level 23 or higher, the app user must explicitly grant this permission to the app through a permission management screen. The app requests the user's approval by sending an intent with action Settings.ACTION_MANAGE_WRITE_SETTINGS. The app can check whether it has this authorization by calling Settings.System.canWrite().", | |
"protection_level": [ | |
"signature", | |
"preinstalled", | |
"appop", | |
"pre23" | |
], | |
"constant_value": "android.permission.WRITE_SETTINGS" | |
}, | |
{ | |
"name": "WRITE_SYNC_SETTINGS", | |
"api_level": "Added in API level 1", | |
"description": "Allows applications to write the sync settings.", | |
"protection_level": [ | |
"normal" | |
], | |
"constant_value": "android.permission.WRITE_SYNC_SETTINGS" | |
}, | |
{ | |
"name": "WRITE_VOICEMAIL", | |
"api_level": "Added in API level 21", | |
"description": "Allows an application to modify and remove existing voicemails in the system.", | |
"protection_level": [ | |
"signature", | |
"privileged", | |
"role" | |
], | |
"constant_value": "com.android.voicemail.permission.WRITE_VOICEMAIL" | |
} | |
] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import json | |
import re | |
from dataclasses import dataclass | |
from typing import List, Optional | |
from bs4 import BeautifulSoup | |
import requests | |
@dataclass | |
class PermissionMetadata: | |
name: str | |
api_level: str | |
description: str | |
protection_level: Optional[List[str]] | |
constant_value: str | |
def get_protection_level(text): | |
protection_regex = re.search(r'(Protection level: ((?:\w+|\|)+))', text) | |
if protection_regex is None: | |
return None, '' | |
protection_levels = protection_regex.group(2).split('|') | |
return protection_levels, protection_regex.group(1) | |
def get_constant_value(text): | |
constant_regex = re.search(r'(Constant Value:(?: |\n)+"((?:\w|\.)+))"', text) | |
if constant_regex is None: | |
raise ValueError(f'Constant value not found in description: {text}') | |
return constant_regex.group(2), constant_regex.group(1) | |
def clean(text, remove=None): | |
"""Cleans unnecessary spaces. Removes the text in the remove list.""" | |
if remove is not None: | |
for r in remove: | |
text = text.replace(r, '') | |
res = ' '.join(text.split()).strip() | |
if res.endswith('"'): | |
return clean(res[:-1]) | |
return res | |
def main(): | |
req = requests.get('https://developer.android.com/reference/android/Manifest.permission') | |
soup = BeautifulSoup(req.text, 'html.parser') | |
content = soup.find('div', id='jd-content') | |
all_permissions = content.find_all('div', {'data-version-added': re.compile(r'\d+|\w+')}, recursive=False) | |
print(f'{len(all_permissions)} permissions found') | |
permissions = [] | |
for div in all_permissions: | |
name = clean(div.find('h3').text) | |
api_level = clean(div.find('div', {'class': 'api-level'}).text) | |
p_tags = div.find_all('p', recursive=False) | |
text_l = [] | |
for p in p_tags: | |
text_l.append(p.text) | |
text = '\n'.join(text_l) | |
protection_level, remove1 = get_protection_level(text) | |
constant_value, remove2 = get_constant_value(text) | |
description = clean(text, [remove1, remove2]) | |
permission = PermissionMetadata(name, api_level, description, protection_level, constant_value) | |
permissions.append(permission) | |
with open('permissions.json', 'w', encoding='utf8') as f: | |
json.dump([permission.__dict__ for permission in permissions], f, indent=4) | |
print('Permissions saved to permissions.json') | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment