В Android 9 и более ранних версиях разрешения захвата буфера экрана ( READ_FRAME_BUFFER
, CAPTURE_VIDEO_OUTPUT
и CAPTURE_SECURE_VIDEO_OUTPUT
) были предоставлены приложениям, которые имели либо подпись, либо привилегированные разрешения. Это позволило беспрепятственно выполнять операции захвата буфера экрана, такие как создание снимков экрана или запись содержимого экрана устройства.
Начиная с Android 10, чтобы предотвратить автоматический доступ к содержимому экрана устройства, разрешения на захват видео не предоставляются привилегированным приложениям. Доступ без согласия пользователя ограничен и предоставляется только приложениям, имеющим разрешение подписи. Это требование касается производителей устройств, которые запускают привилегированные приложения, полагающиеся на эту функцию автоматического захвата.
Начиная с Android 10, если у вас нет перечисленных разрешений на захват подписи экранного буфера, ваше приложение не может захватывать экранные буферы без согласия пользователя. Чтобы убедиться, что у вас есть необходимые разрешения, найдите в файле манифеста ранее перечисленные разрешения подписи. Перенесите все затронутые привилегированные приложения (найденные в вашем поиске) в класс MediaProjectionManager , который позволяет любому стороннему приложению захватывать экранные буферы без разрешений, но с согласия пользователя. Этот поток отображает диалоговое окно, предлагающее пользователю разрешить захват экрана, когда приложение инициирует его. В Android 10 к новым функциям диалогового окна относятся следующие:
- Обеспечивает более заметные ассоциации со значком Cast .
- Предоставляет дополнительные сведения о конфиденциальности данных, к которым можно получить доступ.
- Не позволяет пользователям скрывать диалоговое окно при будущих запусках: диалоговое окно отображается каждый раз.