Android 防止截屏和录屏

发布于:2024-10-10 ⋅ 阅读:(251) ⋅ 点赞:(0)

通过给当前的window对象设置标记WindowManager.LayoutParams.FLAG_SECURE来防止截屏和录屏

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 防止截屏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
        setContentView(R.layout.activity_main);
    }

设置以后,用手机快捷键截屏会提示如下:“当前页面涉及隐私内容,防止截屏和录屏”

如果在当前页面想根据不同内容来取决于是否设置禁止截屏的时候,可以通过

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);

在Android应用中,如果你已经设置了禁止截屏,然后想根据内容的变化动态取消这个限制,可以通过修改Window的标志来实现。以下是具体步骤:

  1. 设置禁止截屏
    通常通过以下代码设置禁止截屏:

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

  2. 取消禁止截屏
    当内容发生变化时,调用以下代码来取消这个限制:

    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);

  3. 监控内容变化
    根据业务逻辑,在监控到特定内容变化时调用clearFlags方法。例如,你可以在数据更新的回调方法、监听器、或观察者模式中执行这一操作。

// 监听内容变化
someObservable.addObserver(new Observer() {
    @Override
    public void update(Observable o, Object arg) {
        // 内容发生变化时,取消禁止截屏
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
    }
});

这种方法可以确保在内容发生变化时,用户能够再次截屏。


网站公告

今日签到

点亮在社区的每一天
去签到