最近遇到一個需求,因爲app中存在自動掃描證件(敏感信息)獲取用戶真實信息的功能。並且因爲在系統會自動獲取app的最後一個activity的screen shot,並將其顯示於recent task list(最近任務列表)中。所以可能會存在敏感信息泄露的問題。html
解決方法1:java
在AndroidManifest.xml中對應的會處於activity棧底的activity節點上添加屬性android
android:excludeFromRecents="true"
此時,全部與該activity處於同一個棧裏的同一個app的activity都不會顯示在recent task list(最近任務列表)中。canvas
可是此方法帶來的問題是:用戶不能使用recent task list(最近任務列表)來快速啓動咱們的app。app
解決方法2:測試
重寫Activity中的code
public boolean onCreateThumbnail(Bitmap outBitmap, Canvas canvas)
方法,使用該方法將自定義的圖片供recent task list(最近任務列表)使用。xml
可是通過從4.4.4到6.0.1系統的測試,該方法在這兩個版本之間系統均不起做用。htm
解決方法3:圖片
在對應的activity中的onCreate()方法中添加以下代碼
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
能夠使設置了該flag的activity不能被截屏,包括系統。這就解決了敏感信息出如今recent task list(最近任務列表)中的問題。
注意:這個flag的設置能夠是動態的,這意味着當監聽到是用戶操做按鍵截取當前屏幕的時候能夠解除這個flag,而後等待用戶截屏完成後,再恢復這個flag。