防止 Android 应用程序中的屏幕捕获
我想知道是否有一种方法可以通过某些“onXXXXX”回调方法或接收到的广播来检测其他进程是否要截取我的应用程序显示的屏幕截图。例如,如果 SDK 工具或某些其他屏幕捕获应用程序执行“屏幕捕获”,我希望收到通知,然后决定是否应该允许或禁止屏幕捕获。
如果这是不可能的,是否有办法锁定显示,以便其他进程无法捕获我的显示屏幕?
I was wondering if there is a way to detect through some "onXXXXX" call-back method or received broadcast if some other process is about to take a screen-shot of my app's display. For example if the SDK tools or some other screen capturing app performs a "Screen Capture", I would like to be notified and then decide if I should allow or disallow the screen capture.
If this is not possible is there a way to lock the display so no other process can screen capture my display?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这对我在 Samsung Tab 2 7" 上
使用 以下方法 有效,只需将
FLAG_SECURE
添加到窗口标志,警告
并附带您可能需要更改为的
This worked for me on a Samsung Tab 2 7"
Using the following approach, to simply add the
FLAG_SECURE
to the Window Flagswith the caveat that you may need to change
to
不支持任何方法来截取其他应用的屏幕截图安卓。唯一的方法涉及 root 或使用 SDK,这两种方法都几乎没有机会阻止您或接收其通知。如果另一个应用程序截取了您的屏幕截图,则默认情况下它会使用不受支持的方法,并且可能可以按照自己的意愿进行操作。
我想澄清一下,我并不是暗示您不应该使用任何可用的方法来保护您的应用程序。我只是想让您知道,如果不使用不受支持的方法,可能无法做到这一点,而且即使您确实使用它们,也可能无法 100% 安全地防范屏幕截图。
There is no supported method to take a screenshot of another app on Android. The only ways involve either rooting or using the SDK, which both offer little to no chance of you either blocking or receiving notification of it. If another app takes your screenshot, it is by default using non-supported methods and can probably do as it pleases.
I'd like to clarify that I am not implying you shouldn't use any methods available to secure your app. I'm just letting you know that it is probably impossible to do so without using non-supported methods, and that even if you do use them you may not be 100% secure against screenshots.