2015-02-12 86 views
0

我想從我的應用程序中確定我的Android設備的存儲加密狀態。在上述有關Android Developer page的建議,這裏是我的代碼:是我還是DevicePolicyManager.getStorageEncryptionStatus()被破壞?

DevicePolicyManager mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 
int encryptionStatus = mDPM.getStorageEncryptionStatus(); 
if (DEBUG) Log.v(TAG, "checkSecuritySettingsSufficient: encryptionStatus=" + encryptionStatus); 

這裏的麻煩:當我在設備上運行的代碼(我已經試過了在摩托羅拉Droid Maxx的運行Android 4.4.4和運行Android 5.0.2的Nexus 7)這是我以前加密的,DevicePolicyManager.getStorageEncryptionStatus()總是返回值1,即ENCRYPTION_STATUS_INACTIVE

因此,儘管文件系統是絕對加密的(我從Settings > Security頁面檢查了它的狀態),但Android因此報告說設備未加密。

此功能是否被破壞?在SO或其他網絡資源上似乎沒有任何提及。這使我相信我沒有正確地做到DevicePolicyManager

UPDATE通過加密的步驟與摩托羅拉設備再次運行後,DevicePolicyManager.getStorageEncryptionStatus()將返回正確的值,但它的的Nexus仍然失敗7.

回答

5

我只是碰到了同樣的問題,並發現它發生的原因是設備啓用了磁盤加密,但不需要在啓動時輸入密碼。更改密碼並強制啓動時需要的PIN選項爲true使DevicePolicyManager.getStorageEncryptionStatus()正確返回ENCRYPTION_STATUS_ACTIVE

+0

是的,顯然是這樣。根據我們的經驗,getStorageEncryptionStatus返回ENCRYPTION_STATUS_INACTIVE,除非啓用了* both *加密並且需要PIN代碼。這似乎是錯誤的,但這是我們必須處理的。 – 2015-06-16 16:33:10

+1

加密開啓但無引腳啓動nexus 6返回ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY,但帶有Android 6的Galaxy S7返回ENCRYPTION_STATUS_ACTIVE – David 2016-10-27 17:54:57