Как сделать скриншот другого приложения программно без разрешения root, например, Скриншот UX Trial?
-
Я знаю, что могу захватить растровое изображение корневого представления в своем приложении. Но я не могу получить корневой вид другого приложения, когда мое приложение работает в фоновом режиме
bitmap = Bitmap.createBitmap(rootview.getDrawingCache());
-
Имеется разрешение на захват текущего буфера кадров в манифесте:
android.permission.READ_FRAME_BUFFER
. Но некоторые веб-сайты говорят, что это только для подписного приложения.
После попытки Скриншота UX Trial я прочитал разрешение:
- ИНТЕРНЕТ: для подключения к локальному серверу скриншотов для корневого телефона.
- SYSTEM_ALERT_WINDOW: для самой верхней кнопки камеры.
- VIBRATE: для вибросигнала.
- WRITE_EXTERNAL_STORAGE: сохранить скриншот.
- GET_TASKS: для обнаружения переднего плана. Действие настройки Develoment для метода без привязки и без предварительной загрузки.
Кажется, что SYSTEM_ALERT_WINDOW
или GET_TASKS
позволяют приложению делать снимок экрана.
У меня есть две догадки о том, как это работает:
- Он может иметь доступ к
Activity
активности переднего плана, он получает корневой видActivity
, фиксирует его скриншот. - Вызов
glreadpixels
Если вы попробуете одно из моих предположений, пожалуйста, дайте мне знать результат.