首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过编程检测Android中是否有正在运行的录屏进程/app?

如何通过编程检测Android中是否有正在运行的录屏进程/app?
EN

Stack Overflow用户
提问于 2017-06-14 20:33:21
回答 3查看 9.5K关注 0票数 17

我不想让用户截图或记录我的应用程序的屏幕。我已经为窗口添加了安全标志。这将防止用户截取屏幕截图和录制屏幕。

如果屏幕录制打开,我的应用程序会阻止录制内容,但会录制音频。

在某些根设备上,安全标志可能无法按预期工作。因此,我只想检测是否有任何屏幕录制应用程序/进程正在后台运行,以便我可以隐藏敏感数据并防止其被录制。

有什么方法可以检测屏幕录制是否打开了吗?

EN

回答 3

Stack Overflow用户

发布于 2017-06-14 21:08:12

有什么方法可以检测到屏幕录制是否打开了?

不是的。

所以我只想检测是否有任何屏幕录制应用程序/进程在后台运行,这样我就可以隐藏敏感数据并防止它被录制。

由于屏幕录制不需要特定于录制的应用程序或进程(例如,adb shell screenrecord),而且您无法知道正在使用媒体投影API的特定应用程序或进程,因此这似乎不切实际。而且,在现代版本的Android上,你无法知道其他进程正在运行。此外,没有什么可以阻止用户将另一个摄像头指向设备屏幕,并以这种方式记录其内容。

我不希望用户截取我的应用程序的屏幕截图或录制屏幕

那就不要写应用程序了。FLAG_SECURE背后的想法是帮助保护用户免受第三方的攻击,而不是保护开发人员免受用户的攻击。

票数 10
EN

Stack Overflow用户

发布于 2021-10-19 08:45:11

这里的答案实际上只是安全性方面的一般问题。一旦数据流向某人的设备,那么您必须假设他们可以完全、不受限制地访问它。在某种意义上,其他的一切都只是混淆。这充其量只会让它变得更难一点。即使设备的软件提供了一些保护,用户也可以通过物理方式访问该设备,并可以对其进行根操作。如果你想要更好的安全性,那么它需要由设备通过硬件提供。一开始,这是一个大问题,因为电影被流式传输到移动设备上。设备需要一种特殊的硬件加密通道,每秒可以解密到超大的数据量,如果有人试图将未加密的数据转移到屏幕上,就很难写回磁盘。

现在,上面的说明只是为了说明,当数据到达用户设备时,不可能保证您可以控制数据。相反,你应该退后一步,问问你试图实现的目标是什么?您想要防止哪种类型的行为?如果一小部分精通技术的用户能够解决您的保护问题,这是可以的还是很大的问题?数据“泄露”的可接受比率是多少?这真的取决于数据的敏感性,以及你告诉用户你对它有什么保证。这方面是100%最关键的部分。如果您告诉用户他们发送的数据肯定是短暂的,那么这是不可能的。试图建立它,修补所有的漏洞,并玩打地鼠游戏是一场失败的战斗。赢的唯一方法就是不玩。

票数 1
EN

Stack Overflow用户

发布于 2021-10-21 12:31:15

正如@CommonsWare所说,没有办法

知道特定的应用程序或进程正在使用媒体投影应用程序接口,这似乎不切实际。

但是,您可以像这样使用FLAG_SECURE

代码语言:javascript
运行
复制
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); 

正如docs here中所述。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44544931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档