禁用所有应用中的屏幕截图捕获

时间:2015-12-01 06:06:30

标签: android screenshot mdm

我正在创建一个MDM应用程序,我必须阻止所有屏幕截图 设备中的应用。我知道用

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

我可以在我的应用活动中禁用屏幕截图,但我想 在安装到设备中的所有应用中禁用屏幕捕获。先前 我正在使用File观察器阻止屏幕捕获,它正在检测是否 任何图像都已添加到Screenshot文件夹中,它正在删除它 图片。但是从Android M,他们不允许文件观察者。一世 搜索很多,但没有得到任何解决方案。但很多Android应用程序 就像快速治疗的seqrite一样,MDM阻止了android中的屏幕截图 M也是,所以必须有某种方式。

我找到了api setScreenCaptureDisabled 在DevicePolicyManger类中,它可以禁用屏幕捕获,但它 只能由设备所有者应用调用。

如果有人知道阻止屏幕截图的方法,请帮助我。

2 个答案:

答案 0 :(得分:0)

要启动设备所有者,您需要擦除设备并触摸NFC或让用户从菜单中选择DO(仅限5.1及更高版本)。除非您使用摩托罗拉或KNOX API(特定于平台)之类的东西,否则您将无法使用常规Android。

答案 1 :(得分:0)

我在seqrite应用程序中阻止屏幕捕获时使用日志获得了解决方案。在屏幕阻止激活的情况下,他们启动了一个服务,他们正在显示一个浮动窗口

  WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                    WindowManager.LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                    WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_SECURE,
                    PixelFormat.TRANSPARENT);
                params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                params.gravity = Gravity.CENTER;
                mView = new LinearLayout(ctx);
                View  btn = new View(ctx);
                mView.addView(btn);
                wm.addView(mView, params);

这里我使用的是flag secure,它阻止了跨所有应用程序的屏幕捕获。因为此窗口位于顶部,阻止了屏幕捕获。