如何以编程方式检测Android中是否正在运行任何屏幕录制过程/应用程序?

Kal*_*esh 7 java security android screen-grab screen-recording

我不希望用户截取我的应用程序的屏幕截图或记录屏幕.我已经在窗口中添加了安全标志.这可以防止用户截取屏幕截图和录制屏幕.

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

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

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

Com*_*are 6

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

没有.

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

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

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

然后不要写应用程序.背后的想法FLAG_SECURE是帮助保护用户免受第三方攻击,而不是保护开发者免受用户侵害.

  • 虽然答案的一切都很好,但在我看来,您 FLAG_SECURE 背后的想法似乎是错误的。在许多用例中,开发人员可能需要保护用户的数据,例如仅向付费用户提供不应通过屏幕截图在用户之间共享的数据 (2认同)
  • @Abbas:“FLAG_SECURE”并不是作为 DRM 解决方案而设计的。 (2认同)