¿Por qué las capturas de pantalla de Android requieren permisos de root?
¿Por qué las capturas de pantalla de Android requieren permisos de root?
La razón principal
Al llamar a la función de captura de pantalla, el sistema Android generalmente toma capturas de pantalla llamando comandos. Sin embargo, estos comandos no se pueden ejecutar con permisos de usuario normales y deben estar bajo el usuario root. permisos para tomar capturas de pantalla.
Implementación principal y motivos
El método de captura de pantalla tradicional es leer el búfer de fotogramas, que requiere permisos de root y lo proporciona Android 3.0.sdk.
El método de captura de pantalla de SurfaceFlinger proporciona una solución en Android 4.0. Cambiar el programa requiere permisos a nivel del sistema, permiso READ_FRAMEBUFFER, porque sus permisos del sistema también deben ser permisos de root para tomar capturas de pantalla.
Como la mayoría de Las bases de desarrollo actuales de Android están en la versión 4.0, no es necesario utilizar SurfaceFlinger en Android 4.0. Todas las versiones están desarrolladas sobre la base de 4.0, por lo que verá que muchas capturas de pantalla tomadas por software de captura de pantalla de terceros requieren permisos de root para tomar capturas de pantalla.
Además
No todas las capturas de pantalla requieren permisos de root. De hecho, muchos programas de captura de pantalla tienen un programa de captura de pantalla que puede tomar capturas de pantalla sin permisos de root.
Implementación principal
Captura de pantalla de Android: método ddms.
Principio de implementación
El método principal para tomar una captura de pantalla es ejecutar el comando adb shell. Llamar a estos comandos en realidad tendrá permisos del sistema, pero lo especial de este método es que en realidad toma una captura de pantalla del demonio adbd en el dispositivo a través del comando de captura de pantalla del shell adb, y este proceso inicia indirectamente la captura de pantalla. Los pasos en la segunda sección del método 2 anterior para abrir SurfaceFlinger para tomar una captura de pantalla
son:
adbd se ejecuta como un usuario de shell y el sistema asigna el grupo de gráficos al usuario de shell, por lo que el usuario de shell tiene permiso para llamar a la interfaz de Surfaceflinger.
Finalmente
Se recomienda utilizar una solución que no requiera acceso root para realizar capturas de pantalla.