在 Android 4.0+ 上检测屏幕截图尝试
Posted
技术标签:
【中文标题】在 Android 4.0+ 上检测屏幕截图尝试【英文标题】:Detect screenshot attempts on Android 4.0+ 【发布时间】:2014-08-21 12:54:54 【问题描述】:我正在开发一个 android 应用程序,该应用程序高度重视保护用户数据,以至于在本地设备的持久内存中不存储任何内容。
为了进一步保护用户数据,我们希望在有人试图截取活动应用程序的屏幕截图时向我们的服务器发起网络服务调用。
到目前为止,我看到的解决方案包括this snippet,旨在防止截屏并在 Toast 中向用户抛出截屏失败消息。我正在考虑的另一种方法是监听某些设备用来截屏的音量调低和电源按钮的组合(尽管三星 S4 等设备偏离了这种方法)。我最后的手段是在应用程序运行时使用FileObserver in the location of the screenshot Gallery 进行更改,但这似乎也是一个次优的解决方案,并引入了我宁愿没有的权限请求。我也不能确定图片的文件目的地。
我相信 Snapchat 应用能够在远程用户尝试截屏时提醒参与者。除了生根设备,您对如何实现此功能有任何建议吗?也欢迎非官方的方法。
【问题讨论】:
不要忘记用户可以为他们的屏幕拍照并分享敏感数据。此外,没有什么能阻止他们使用 USB 电缆将设备连接到计算机并通过 adb 截取屏幕截图。虽然,这里可能是您正在寻找的答案:***.com/a/9822607/379245 谢谢!我意识到它永远不会是 100% 安全的,而且任何真正想要的用户都可以保留数据而不被发现。但是,由于该应用程序的功能以及使用它的环境,使用 DDMS 拍摄或抓取屏幕的风险很小。但是,我们正在尝试采取尽可能多的措施来通过设备防止这种情况发生。您发布的链接本质上是我第一个链接中的代码 sn-p,最后可能就是我能做的。不过,我对 Snapchat 等应用程序如何能够报告这一点很感兴趣。 最终我在窗口上使用了 FLAG_SECURE 参数。到目前为止,它似乎阻止了 ICS+ 和 DDMS 上的正常屏幕截图。我不确定它是否可以被具有 root 访问权限的人规避。关于它是否易受此影响的任何想法? 我相信使用 root,您几乎可以解决大多数问题,所以我认为使用 root 截屏仍然是可能的。 【参考方案1】:FLAG_SECURE 可能是避免在窗口中截屏的最佳方法,但正如一些评论者所说,它有一些解决方法。
也许this answer 解决了他们如何在 Snapchat 中检测截屏时间的问题。
【讨论】:
以上是关于在 Android 4.0+ 上检测屏幕截图尝试的主要内容,如果未能解决你的问题,请参考以下文章