簡體   English   中英

如何以編程方式檢測是否有任何屏幕錄制進程/應用程序在 Android 中運行?

[英]How to programmatically detect if any screen recording process/app is running in Android?

我不希望用戶截取我的應用程序的屏幕截圖或錄制屏幕。 我在窗口中添加了安全標志。 這可以防止用戶截取屏幕截圖和錄制屏幕。

如果屏幕錄制打開,我的應用程序會阻止錄制內容,但會錄制音頻。

在某些有 root 權限的設備上,安全標志可能無法按預期工作。 所以我只想檢測是否有任何屏幕錄制應用程序/進程在后台運行,以便我可以隱藏敏感數據並防止它被記錄。

有什么方法可以檢測屏幕錄制是否打開?

我有什么方法可以檢測到屏幕錄制是否開啟?

沒有。

所以我只是想檢測是否有任何屏幕錄制應用程序/進程在后台運行,以便我可以隱藏敏感數據並防止其被記錄。

由於屏幕錄制不需要特定於錄制的應用程序或進程(例如, adb shell screenrecord ),並且由於您無法了解使用媒體投影API的特定應用程序或進程,因此這似乎不切實際。 而且,在Android的現代版本中,無論如何,您無法知道其他進程正在運行。 此外,沒有什么能阻止用戶將另一台攝像機指向設備屏幕並以此方式記錄其內容。

我不希望用戶截取我的應用程序的屏幕截圖或記錄屏幕

然后不要寫應用程序。 FLAG_SECURE背后的想法是幫助保護用戶免受第三方攻擊,而不是保護開發者免受用戶侵害。

這里的答案實際上只是安全性的一般性答案。 一旦數據流向某人的設備,您就必須假設他們可以完全、不受限制地訪問它。 從某種意義上說,其他一切都只是混淆。 充其量只是讓它變得更加困難。 即使設備的軟件提供了一些保護,用戶也可以物理訪問該設備並可以對其進行 root。 在某些時候,必須對數據進行未加密和反混淆處理,以便將其顯示給用戶,而惡意用戶可以進行中間人攻擊。 如果您想要更好的安全性,那么它需要由設備通過硬件提供。 最初將電影流式傳輸到移動設備時,這是一個大問題。 設備需要一個特殊的硬件加密通道,每秒解密一些不合時宜的數據量,如果有人試圖將未加密的數據在其傳輸到屏幕的途中進行 MITM,則很難將其寫回磁盤。

現在以上只是為了表明當數據進入用戶設備時,您無法保證您可以控制數據。 相反,你應該退后一步,問問你想要完成什么? 你想阻止什么類型的行為? 如果少數精通技術的用戶能夠解決您的保護措施,這是否可行或有什么大不了的? 什么是可接受的數據“泄漏”率。 這實際上取決於數據的敏感程度以及您告訴用戶您擁有的保證類型。 這方面是100%最關鍵的部分。 如果您告訴用戶他們發送的數據保證是短暫的,那么這是不可能的。 試圖建造它並修補所有漏洞並玩鼴鼠游戲是一場失敗的戰斗。 贏的唯一方法就是不玩。

正如@CommonsWare 所說,沒有辦法

了解使用媒體投影 API 的特定應用程序或進程,這似乎不切實際。

但是,您可以像這樣使用FLAG_SECURE

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

如此處的文檔中所述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM