安卓移动设备管理 : Disable screenshots capture across all apps

标签 android screenshot mdm

我正在制作一个 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/

相关文章:

iphone - 如何在 iOS 中以编程方式截取屏幕截图?

tomcat - 如何使用tomcat接收和响应HTTP PUT?

android - 如何在 Android 上的着色器中声明 OpenGL 版本?

android - 将屏幕截图上传到 Google Play 时出错

java - 如何使用 MPAndroidChart 库将 float 数据从 firebase 转换为图表的日期数据

windows-phone - 创建全景控制屏幕截图

android - Pub/Sub - 当 STATE 在注册时处于 Activity 状态时推送到 API

Android 12 工作配置文件设备识别

android - 将 List<String> 放入 Bundle

Android 动画 GIF(纸杯蛋糕)