0

我正在开发一个应用程序来获取具有 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但没有帮助。

关于如何执行正确的屏幕截图调用将其保存到应用程序内部存储然后允许应用程序访问的任何想法?

4

1 回答 1

0

如果您由于权限而访问该文件,则可以删除-p <filename>该命令的一部分。在这种情况下,创建的图像将通过管道传输到您的应用程序绝对可以访问的标准输出。您只需要连接到InputStream执行Processsu 命令并将数据自己保存到文件或在您的应用程序中使用它。

如果此处显示如何读取标准输出:在 su 进程中读取命令输出 请注意,在此示例中,询问者想要读取文本,因此接受的解决方案将数据读取到缓冲区并转换为String- 当然您不需要转换为PNG文件不是可打印的字符串...

于 2017-02-22T19:16:31.930 回答