我正在制作一个 MDM 应用程序,我必须在其中屏蔽所有屏幕截图 设备中的应用程序。我知道使用
getWindow().setFlags(LayoutParams.FLAG_SECURE,LayoutParams.FLAG_SECURE)
我可以在我的应用程序 Activity 中禁用屏幕捕获,但我想 在安装到设备的所有应用程序中禁用屏幕捕获。之前 我正在使用文件观察器来阻止屏幕捕获,它正在检测是否 任何图像已添加到屏幕截图文件夹,它正在删除 图片。但是从 Android M 开始,他们不允许文件观察器。我 有很多搜索但没有得到任何解决方案。但是很多安卓应用 就像 quick heal 的 seqrite MDM 正在阻止 android 中的屏幕捕获 M也是,所以一定有办法。
我找到了 api setScreenCaptureDisabled 在可以禁用屏幕捕获的 DevicePolicyManger 类中,但它 只能由设备所有者应用程序调用。
请哪位知道屏蔽截屏的方法帮帮我
最佳答案
我通过在 seqrite 应用程序中阻止屏幕捕获时使用日志获得了解决方案。在激活屏幕阻止的情况下,他们启动了一项服务,在该服务上显示了一个 float 窗口
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);
我在这里使用安全标志,它阻止在所有应用程序中捕获屏幕。因为此窗口位于顶部,阻止了屏幕捕获。
关于安卓移动设备管理 : Disable screenshots capture across all apps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34013695/