我意识到,为了捕获手机的屏幕截图,所有屏幕截图应用程序都需要我拥有一部扎根的手机。为什么会这样呢?为什么我们不能像Windows那样拥有一个简单的Android截图应用程序?
我意识到,为了捕获手机的屏幕截图,所有屏幕截图应用程序都需要我拥有一部扎根的手机。为什么会这样呢?为什么我们不能像Windows那样拥有一个简单的Android截图应用程序?
Answers:
答案很简单,这是权限问题。
Android将所谓的帧缓冲区用于视频显示。帧缓冲区位于/ dev / graphics / fb0。这个“文件”基本上是设备在用户界面发生更改时写入的流,它包含〜2帧屏幕显示。
帧缓冲文件的权限为rw- rw- ---
。请注意,最后一个“组”具有3个“-”。这基本上意味着,如果您不是owner
root用户,则您甚至没有权限读取该文件。
如果安装了系统的应用程序可以截取屏幕截图,则该应用程序将有权读取帧缓冲区。我相信,这就是Motorola Xoom能够截取屏幕截图的方式。它具有一个作为系统应用程序安装在设备上的应用程序。
对于开发人员而言,读取帧缓冲区实际上很简单,只要他们有权读取它。
r--
。如果任何应用程序可以在您的屏幕上监视,那么这可能会带来安全风险,但这是否仅仅是安装之前您必须接受的权限之一(此应用程序可以监视您的屏幕)?要么谷歌要么在弹出菜单中添加一个内置的屏幕截图,然后其他人都无法访问它。后者是我的情况,我的意思是说他们刚刚向Chrome添加了打印预览。
由于Android的安全重点是将所有应用程序与彼此的数据分开,以防止恶意应用程序窃取或更改您信任的应用程序中的数据,因此它们不允许某个应用程序截取其他应用程序的屏幕截图。
考虑一下您有多少应用程序可以执行OCR之类的功能来将图片转换为文本,我可以想到手机上至少有四个应用程序可以做到这一点,例如Google Goggles OCRing书名以及OCRing,用外语翻译文本块。现在考虑一下,您有多少个应用程序希望在屏幕上显示文本,而您不希望看到不值得信任的应用程序,我的手机上有一个密码数据库应用程序,其中包含用于各种系统的密码加密数据库,一个恶意的屏保应用程序可能会等待直到该密码应用程序运行,然后在屏幕上拍照并显示登录详细信息,然后对其进行OCR并发送出去。即使您未将应用程序授予“联系人”数据库或浏览器历史记录的权限,它也可以对“联系人”列表中的所有内容执行相同的操作,或聊天记录等。这只是滥用屏幕访问权限的一种方式。
这就是为什么要使屏幕截图具有通用性,它必须位于操作系统(您已经信任所有数据)中的原因。这就是为什么在具有内置屏幕截图功能的手机上将其作为系统的一部分而不是作为单独的应用程序添加的原因。
如果您扎根手机并允许某个应用拍摄屏幕截图,那么您实际上是在暗示您暗中信任该应用能够执行系统可以做的所有事情,包括访问和干扰其他应用及其数据,并且您完全相信它不会滥用该访问权限。除了System / OS,Android绝不会允许任何事情。
简短的回答:因为1)计算机很复杂,以及2)屏幕截图功能实际上不是很简单(对于程序员,而不是用户)。
换句话说,截屏需要截屏过程以非常深入地钩住操作系统内部,使它们陷入混乱,然后再次脱钩。由于Android试图建立一个内置的安全模型(与Windows中看到的“事后追捧”相对),因此在几个安全障碍上进行了屏幕截图。可以绕开这些密码,但是当前唯一可行的方法(没有在内核中创建漏洞-和潜在的漏洞-)是使用功能强大的root帐户,该帐户不受限制。