2015-12-01 27 views
4

我正在製作MDM應用,在該應用中,我必須屏蔽所有設備中的所有 應用的屏幕截圖。我知道使用禁用跨所有應用的截圖截圖

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

我可以在我的應用程序的活動禁用屏幕捕捉,但我想在安裝到設備上的所有應用程序 禁用屏幕捕獲。以前 我正在使用文件觀察器來阻止屏幕捕獲,它正在檢測是否有 任何圖像已被添加到屏幕截圖文件夾,它正在刪除那個 圖像。但從Android M來看,他們不允許文件觀察員。我 有搜索很多,但沒有得到任何解決方案。但許多Android應用程序如快速治療的seqrite MDM也阻止了Android M中的屏幕捕獲,因此必須有某種方法。

我在DevicePolicyManger類中找到了api setScreenCaptureDisabled ,該類可以禁用屏幕截圖,但它只能由設備所有者應用程序調用 。

如果有人知道阻止屏幕截圖的方法,請幫助我。

+0

Seqrite請求在其用戶的移動設備中爲其應用激活設備管理員模式;請參閱第38頁http://bitcast-b.bitgravity.com/quickheal/seqrite/documents/en/manuals/Seqrite_Mobile_Device_Management_MDM_Guide.pdf – ecle

+0

我的應用程序也請求設備管理員模式,但DevicePolicyManger類的setScreenCaptureDisabled可由設備調用/資料所有者。我在http://stackoverflow.com/questions/21183328/how-to-make-my-app-a-device-owner看到如何讓我的應用程序設備所有者。但這不是我的應用程序的解決方案。 – Rizwan

+0

試着在這裏找到解決方案http://developer.android.com/guide/topics/admin/device-admin.html – ecle

回答

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); 

這裏我使用標誌的安全這是在所有應用程序阻止屏幕捕獲。因爲這個窗口位於阻止屏幕截圖的頂部。

0

要啓動設備所有者,您需要擦除設備,NFC將其撞擊或讓用戶從菜單(僅限5.1和更高版本)中選擇DO。除非您使用摩托羅拉或KNOX API(平臺特定)之類的東西,否則您對於一般Android而言並不好運。