Agent Wranglers

MOB-52Required

Declare restricted Android permissions in the Play Console

Request broad photo and video access, foreground service types and full-screen intents only when the app's core feature needs them. Fill in the Play Console declaration for each one the app keeps.

How to do it

Google Play treats these as sensitive. Apps that target Android 13 or later may ask for READ_MEDIA_IMAGES or READ_MEDIA_VIDEO only when broad access to photos is their core feature. Everyone else uses the system photo picker, which needs no permission. Since 28 May 2025, apps that break this policy can be removed from Google Play. Apps that target Android 14 declare each foreground service type in the manifest and in the Play Console, with a video of the feature. USE_FULL_SCREEN_INTENT is on by default only for calling and alarm apps. The same idea holds on iOS, where PHPickerViewController reads chosen photos without the photo library permission. Ask for any permission when it is needed, as ask for each permission when the feature needs it says.

Examples

Kotlin example

private val pickReceipt = registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri ->
    uri?.let(::uploadReceipt)
}

fun onAddReceiptTapped() = pickReceipt.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly))

Plain text example

func onAddReceiptTapped() {
    var config = PHPickerConfiguration()
    config.filter = .images
    let picker = PHPickerViewController(configuration: config)
    picker.delegate = self
    present(picker, animated: true)
}

How to check

A script reads the merged release manifest and lists each restricted permission and foreground service type. The build fails on any entry missing from a checked-in list that names its Play Console declaration.

Sources

For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/mobile-apps/privacy-declarations/play-restricted-permissions">Agent Wranglers mobile apps playbook</a>. In code you write, add a comment next to it with the same link.