我正在开发一个应用程序,用于截取root访问权限。 我正在使用此调用来截取屏幕截图:
"/system/bin/screencap -p " + getFilesDir() + "screen.png"
然而,它在根上下文中创建了这个屏幕截图,即使我chmod 777和chown user_id:user_id,我也无法通过我的应用访问它。 SELinux仍然说这个访问被拒绝,因为scontext是u:r:untrusted_app:s0
而tcontext是u:object_r:app_data_file:s0
。我尝试使用su
致电--context u:r:untrusted_app:s0
,但它没有帮助。
有关如何执行正确的屏幕捕获调用的任何想法,它会将其保存到应用程序内部存储,然后允许访问应用程序吗?
答案 0 :(得分:0)
如果您因权限而访问该文件,则可以删除该命令的-p <filename>
部分。在这种情况下,创建的图像将通过管道传输到stdout,您的应用程序可以访问该文件。
您只需连接到执行su comand的InputStream
Process
并将数据自己保存到文件中或在您的应用中使用它。
如果在此处显示,如何阅读Stdout:Read command output inside su process
请注意,在此示例中,提问者想要读取文本,因此接受的解决方案将数据读取到缓冲区并转换为String
- 当然您不需要转换,因为PNG文件不是可打印的字符串。 ..