Starting March 27, 2025, we recommend using android-latest-release
instead of aosp-main
to build and contribute to AOSP. For more information, see Changes to AOSP.
Restricted screen reading
Stay organized with collections
Save and categorize content based on your preferences.
In Android 9 and lower, the screen buffer
capture permissions (READ_FRAME_BUFFER
,
CAPTURE_VIDEO_OUTPUT
, and
CAPTURE_SECURE_VIDEO_OUTPUT
) were granted to apps that
had either signature or privileged permissions. This
enabled seamless screen-buffer capturing activities, such as
taking screenshots, or recording a device's screen contents.
Starting in Android 10, to prevent
silent access to a device's screen contents, video capture
permissions aren't granted to privileged apps. Access
without user consent is restricted,
and granted only to apps that have signature
permissions. Device manufacturers that run privileged apps relying
on this silent capture functionality are affected by this
requirement.
As of Android 10 if you
don't have the listed screen-buffer capture signature permissions, your
app can't capture screen buffers without user consent. To
ensure you have the permissions you need, search your manifest file
for the previously listed signature permissions. Migrate all affected privileged
apps (as found in your search) to the MediaProjectionManager
class, which allows any third party app
to capture screen buffers without permissions, but with user
consent. This flow displays a dialog that prompts the user to
allow screen capturing when an app initiates it. In Android 10,
new features of the dialog include the following:
- Provides more visible associations with the Cast icon.
- Provides more information about the sensitivity of the data
that can be accessed.
- Prevents users from hiding the dialog on future initiations: the dialog shows every time.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-08-29 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-29 UTC."],[],[],null,["# Restricted screen reading\n\nIn Android 9 and lower, the screen buffer\ncapture permissions (`READ_FRAME_BUFFER`,\n`CAPTURE_VIDEO_OUTPUT`, and\n`CAPTURE_SECURE_VIDEO_OUTPUT`) were granted to apps that\nhad *either* signature or privileged permissions. This\nenabled seamless screen-buffer capturing activities, such as\ntaking screenshots, or recording a device's screen contents.\n\nStarting in Android 10, to prevent\nsilent access to a device's screen contents, video capture\npermissions aren't granted to privileged apps. Access\nwithout user consent is [restricted](https://developer.android.com/about/versions/11/privacy/permissions),\nand granted only to apps that have signature\npermissions. Device manufacturers that run privileged apps relying\non this silent capture functionality are affected by this\nrequirement.\n\nAs of Android 10 if you\ndon't have the listed screen-buffer capture signature permissions, your\napp can't capture screen buffers without user consent. To\nensure you have the permissions you need, search your manifest file\nfor the previously listed signature permissions. Migrate all affected privileged\napps (as found in your search) to the [MediaProjectionManager](https://developer.android.com/reference/android/media/projection/MediaProjectionManager)\nclass, which allows any third party app\nto capture screen buffers without permissions, but with user\nconsent. This flow displays a dialog that prompts the user to\nallow screen capturing when an app initiates it. In Android 10,\nnew features of the dialog include the following:\n\n- Provides more visible associations with the **Cast** icon.\n- Provides more information about the sensitivity of the data that can be accessed.\n- Prevents users from hiding the dialog on future initiations: the dialog shows every time."]]