是否可以在屏幕的某些部分阻止屏幕捕获?

Is it possible to block screen capture on certain parts of the screen?

要禁用屏幕捕获,我们可以使用:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,WindowManager.LayoutParams.FLAG_SECURE);

是否可以使用类似隐藏视图的方法?

例如:

[imageview]

[hidden content]

[text view]

不是真的。

system-supplied 解决方案 FLAG_SECURE 是 window,而不是 View。大多数视图仅在 activity 的 window 中绘制。有些视图有条件地使用第二个 window,例如 Spinner 的 drop-down,但您也无法控制那些 windows。

原则上,如果您想从屏幕截图中屏蔽的视图是连续的,您可以设置自己的 window,将视图放在那个 window 中,然后使用 FLAG_SECURE 只有那个 window。这可能很复杂,并可能导致其他类型的问题(例如,multi-window 设备、可访问性)。