通过给当前的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
的标志来实现。以下是具体步骤:
-
设置禁止截屏
通常通过以下代码设置禁止截屏:getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
-
取消禁止截屏
当内容发生变化时,调用以下代码来取消这个限制:getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
-
监控内容变化
根据业务逻辑,在监控到特定内容变化时调用clearFlags
方法。例如,你可以在数据更新的回调方法、监听器、或观察者模式中执行这一操作。
// 监听内容变化
someObservable.addObserver(new Observer() {
@Override
public void update(Observable o, Object arg) {
// 内容发生变化时,取消禁止截屏
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
});
这种方法可以确保在内容发生变化时,用户能够再次截屏。