我正在创建一个MDM应用程序,我必须阻止所有屏幕截图 设备中的应用。我知道用
getWindow().setFlags(LayoutParams.FLAG_SECURE,LayoutParams.FLAG_SECURE)
我可以在我的应用活动中禁用屏幕截图,但我想 在安装到设备中的所有应用中禁用屏幕捕获。先前 我正在使用File观察器阻止屏幕捕获,它正在检测是否 任何图像都已添加到Screenshot文件夹中,它正在删除它 图片。但是从Android M,他们不允许文件观察者。一世 搜索很多,但没有得到任何解决方案。但很多Android应用程序 就像快速治疗的seqrite一样,MDM阻止了android中的屏幕截图 M也是,所以必须有某种方式。
我找到了api setScreenCaptureDisabled 在DevicePolicyManger类中,它可以禁用屏幕捕获,但它 只能由设备所有者应用调用。
如果有人知道阻止屏幕截图的方法,请帮助我。
答案 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,它阻止了跨所有应用程序的屏幕捕获。因为此窗口位于顶部,阻止了屏幕捕获。