Ограниченное чтение с экрана

В Android 9 и ниже, разрешения захвата буфера экрана ( READ_FRAME_BUFFER , CAPTURE_VIDEO_OUTPUT и CAPTURE_SECURE_VIDEO_OUTPUT ) были предоставлены приложения , которые были либо подписи или привилегированные права. Это позволило обеспечить непрерывный захват экранного буфера, например создание снимков экрана или запись содержимого экрана устройства.

Начиная с Android 10, чтобы предотвратить бесшумный доступ к содержимому экрана устройства, привилегированным приложениям не предоставляются разрешения на захват видео. Доступ без согласия пользователя будет ограничен , и предоставляется только для приложений, имеющих разрешение подписи. Это требование распространяется на производителей устройств, которые запускают привилегированные приложения, полагающиеся на эту функцию тихого захвата.

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

  • Обеспечивает более видимые ассоциации с иконкой Cast.
  • Предоставляет дополнительную информацию о конфиденциальности данных, к которым можно получить доступ.
  • Запрещает пользователям скрывать диалог при будущих инициациях: диалог отображается каждый раз.