某些页面涉及到隐私,页面owner 不希望被截图,设置成FLAG_SECURE 属性之后,系统截图就是黑色的。这样的页面有很多比如账户密码设置页面等。
dlg.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_SECURE);
设置了这个flag后, 系统会把当前窗口的
内容视为
安全隐私内容, 系统会阻止这些内容被截屏或者在不安全可靠的场景显示出来.
在Google的过程中, 发现这个flag可以实现以下功能:
-
阻止屏幕截图
-
在Recent apps(任务切换界面)中只显示应用名字和图标, 不显示内容
-
Google App的Now on tap功能不会去分析你的页面的内容
Android 防截屏
Android系统中禁止截屏的实现方式
1. 使用FLAG_SECURE属性
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//禁止当前页面截屏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
setContentView(R.layout.activity_main2);
}
2. 使用SurfaceView
在Android系统中,SurfaceView是一种可以在应用中显示图像和视频的组件。而且,SurfaceView还拥有一个特性,即可以禁止截屏。具体操作是在创建SurfaceView时,使用setSecure()方法来设置:
SurfaceView.setSecure(true);