禁用片段中的屏幕捕获

bit*_*bhi 1 android screenshot fragment

根据 Android 文档,我们可以在 Activity 中禁用屏幕/视频捕获,例如

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
                WindowManager.LayoutParams.FLAG_SECURE);
Run Code Online (Sandbox Code Playgroud)

但我如何在片段中实现相同的目标。例如,假设我有一个包含五个片段的活动,但我想仅在五个片段之一中禁用屏幕/视频捕获,而不在其他片段中禁用。

这样做是

getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
Run Code Online (Sandbox Code Playgroud)

在片段内禁用所有片段中的屏幕/视频捕获。

我是否应该根据片段编写用于在活动中启用/禁用屏幕捕获的逻辑。

Com*_*are 5

FLAG_SECURE是窗口级能力;您不能将其仅应用于窗口的一部分(例如,活动中的一个片段)。

如果“具有五个片段的活动”是指“屏幕上同时有五个片段的活动”,那么据我所知,您无法完成您想要的任务。

如果“具有五个片段的活动”是指“具有五个片段的活动,其中一次只有一个片段可见,例如”中的页面ViewPager,那么您需要FLAG_SECURE在该活动进入和离开时进行切换屏幕。