編輯:關於Android編程
搭載Android 4.0(ICS)附帶了一些改進,使其更容易為人們帶來他們的個人的Android設備工作的。在這篇文章中,我們將看看密鑰存儲功能。
Andr??oid 2.2通過提供Android設備管理API引入了對企業應用的支持。設備管理API的系統級提供了設備管理功能。這些API允許你創建在企業設置有用的安全感知應用程序,其中IT專業人士需要對員工的設備豐富的控制。例如,內置Android應用程序的電子郵件已經利用新的API,從而增強Exchange支持。通過電子郵件應用程序,Exchange管理員可以實施密碼策略 - 包括字母數字密碼或數字PIN碼 - 跨設備。管理員還可以遠程擦除(也就是,在恢復出廠默認值)丟失或被盜的手機。 Exchange用戶可以同步他們的電子郵件和日歷數據。
這份文件的目的是誰想要開發Android供電設備的企業解決方案的開發。它討論了設備管理API提供給由搭載Android員工設備提供更強的安全性的各種功能。
注意有關建設工作方針控制器部署Android for Work信息,請參閱構建工作政策控制器。
設備管理API概述
以下是類型的可能使用設備管理API應用程序的示例:
?電子郵件客戶端。
?那些遠程擦除安全應用程序。
?設備管理服務和應用。
它是如何工作的?
您可以使用設備管理API來編寫用戶安裝在他們的設備設備管理應用程序。設備管理應用程序強制執行所需的政策。下面是它如何工作的:
?系統管理員寫道,實施遠程/本地設備安全策略的設備管理應用程序。這些政策可能被硬編碼到應用程序或應用程序可以動態地獲取來自第三方服務器策略。
?應用程序安裝在用戶的設備。 Android版目前還沒有一個自動化供應解決方案。是一些系統管理員會在應用程序分發給用戶的方法如下:?Google播放。
從另一家商店?Enabling安裝。
?Distributing通過其他手段,如電子郵件或網站的應用程序。
?系統會提示用戶啟用該設備管理應用程序。如何以及何時發生這種情況取決於應用程序是如何實現的。
?一旦用戶打開設備管理應用程序,它們都受到其政策。這些政策通常符合授予利益,如訪問敏感系統和數據。
如果用戶不啟用該設備管理應用程序,它仍然在設備上,但處於非活動狀態。用戶將不會受到其政策,他們將反過來不會得到任何的應用程序的好處,例如,他們可能無法同步數據。
如果用戶不遵從該策略(例如,如果用戶設置違反准則密碼),它是由應用程序來決定如何處理這個問題。然而,典型地,這將導致用戶不能夠同步數據。
如果某個設備試圖連接到需要的設備管理API中不支持的政策服務器,連接不會被允許。設備管理API目前不允許部分配置。換句話說,如果一個設備(例如,傳統設備)不支持的所有陳述的政策,也沒有辦法讓設備進行連接。
如果設備包含多個啟用管理應用程序,最嚴格的政策執行。有沒有辦法針對特定的管理應用程序。
要卸載現有設備管理應用程序,用戶需要先注銷該應用程序為管理員。
政策
在企業環境中,它往往是員工設備必須遵循一套嚴格的支配使用該設備的政策的情況下。設備管理API支持表1.注意設備管理API目前僅支持屏幕鎖密碼列出的策略:
表1.政策由設備管理API的支持。
政策
描述
啟用密碼
要求設備要求PIN或密碼。
最小密碼長度
設置所需的數字作為密碼的字符。例如,您可能需要PIN或密碼至少有六個字符。
需要字母數字密碼
要求密碼有字母和數字的組合。它們可以包括符號字符。
需要復雜的密碼
要求密碼必須至少包含一個字母,數位和一個特殊符號。介紹了Android 3.0的。
在密碼所需的最小字母
最小數量的密碼為所有管理員或一個特定需要的字母。介紹了Android 3.0的。
在密碼所需的最小小寫字母
最小數量的密碼為所有管理員或特定的一個需要小寫字母。介紹了Android 3.0的。
在密碼所需的最小非字母字符
在密碼為所有管理員或一個特定的要求非字母字符的最小數目。介紹了Android 3.0的。
在密碼所需的最小數字位數
最小數量的密碼為所有管理員或特定的一個需要的數值數字。介紹了Android 3.0的。
在密碼所需的最小符號
最小號的密碼,所有的管理員或特定的一個必需的符號。介紹了Android 3.0的。
在密碼所需的最小大寫字母
最小數的密碼,所有的管理員或特定的一個必需的大寫字母。介紹了Android 3.0的。
密碼過期超時
當密碼將過期,表示為當一個設備管理員設置過期超時以毫秒為單位的增量。介紹了Android 3.0的。
密碼歷史記錄限制
此策略可以防止用戶重用的最後n唯一的密碼。此策略通常用於結合setPasswordExpirationTimeout(),這迫使用戶在指定的時間量已過去之後更新其密碼。介紹了Android 3.0的。
最大密碼嘗試失敗
指定設備濕巾其數據之前用戶可以多少次輸入錯誤密碼。設備管理API還允許管理員對設備遠程重置到出廠默認值。這種固定的情況下,在設備丟失或被盜的數據。
最大不活動時間鎖定
設置,因為用戶的時間長度最後觸摸屏幕或設備鎖定屏幕前,按下按鈕。發生這種情況時,用戶需要再次輸入其PIN或密碼才可以使用他們的設備和訪問數據。的值可以是1到60分鐘之間。
需要存儲加密
指定該存儲區應該被加密,如果設備支持它。介紹了Android 3.0的。
禁用攝像頭
指定相機應該被禁用。需要注意的是,這並不必須是一個永久禁用。照相機可以動態地基於上下文,時間啟用/禁用,等等。介紹了Android 4.0的。
其他特性
除了支持上述表中列出的策略,設備管理API可以讓你做到以下幾點:
?提示用戶設置新密碼。
?鎖定裝置立即生效。
?擦拭設備的數據(也就是,將設備恢復到出廠默認設置)。
示例應用程序
本文檔中使用的示例基於設備管理API樣本,這是(通過Android SDK管理器中可用)包含在SDK樣本中,位於您的系統上為
示例應用程序提供的設備管理功能的演示。它提出了一個用戶界面,讓他們能夠在設備管理應用程序的用戶。一旦啟用了該應用程序,他們可以使用這些按鈕在用戶界面中執行以下操作:
?設置密碼質量。
?指??定用戶的口令的要求,如最小長度,它必須包含數字字符的最小數目,等等。
?設置密碼。如果密碼不符合規定的政策,系統將返回一個錯誤。
?將擦除設備之前怎麼會出現很多失敗的密碼嘗試(即,恢復到出廠設置)。
?設置密碼將如何從現在開始不久到期。
?設置密碼歷史長度(長度指的是存儲在歷史舊密碼的數量)。這樣可以防止用戶重用他們以前使用的最後n個密碼之一。
?指??定存儲區域應該被加密,如果設備支持它。
?設置可在設備鎖定前經過的時間處於非活動狀態的最高金額。
?立即設備鎖。
?擦拭設備的數據(也就是,恢復出廠設置)。
?禁用攝像頭。
圖1.示例應用程序的屏幕截圖
開發一個設備管理中的應用
系統管理員可以使用設備管理API來編寫強制執行遠程/本地設備安全策略強制執行的申請。本節總結參與創建的設備管理應用程序的步驟。
創建清單
要使用設備管理API,應用程序的清單必須包括以下內容:?DeviceAdminReceiver的子類,包括以下內容:?TheBIND_DEVICE_ADMIN許可。
向ACTION DEVICE_ADMIN啟用意圖做出回應?The能力,在清單中表示為一個意圖過濾器。
?在元數據使用的安全策略的聲明。
下面是從設備管理樣品清單的摘錄:
需要注意的是:?下列屬性指的是示例應用程序駐留在ApiDemos / RES /價值/ strings.xml中的字符串資源。有關資源的詳細信息,請參閱應用程序資源。 ?android:標簽=“@字符串/活性樣品device_admin”指的是該活動的用戶可讀的標簽。
在設計你的設備管理應用程序,你並不需要包括所有的政策,只是有關你的應用程序的人。對於manifest文件的更多討論,請參閱Android開發者指南。
public class DeviceAdminSample extends DeviceAdminReceiver { void showToast(Context context, String msg) { String status = context.getString(R.string.admin_receiver_status, msg); Toast.makeText(context, status, Toast.LENGTH_SHORT).show(); } @Override public void onEnabled(Context context, Intent intent) { showToast(context, context.getString(R.string.admin_receiver_status_enabled)); } @Override public CharSequence onDisableRequested(Context context, Intent intent) { return context.getString(R.string.admin_receiver_status_disable_warning); } @Override public void onDisabled(Context context, Intent intent) { showToast(context, context.getString(R.string.admin_receiver_status_disabled)); } @Override public void onPasswordChanged(Context context, Intent intent) { showToast(context, context.getString(R.string.admin_receiver_status_pw_changed)); } ... }使應用程序
@Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (super.onPreferenceChange(preference, newValue)) { return true; } boolean value = (Boolean) newValue; if (preference == mEnableCheckbox) { if (value != mAdminActive) { if (value) { // Launch the activity to have the user enable our admin. Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample); intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, mActivity.getString(R.string.add_admin_extra_app_text)); startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN); // return false - don't update checkbox until we're really active return false; } else { mDPM.removeActiveAdmin(mDeviceAdminSample); enableDeviceCapabilitiesArea(false); mAdminActive = false; } } } else if (preference == mDisableCameraCheckbox) { mDPM.setCameraDisabled(mDeviceAdminSample, value); ... } return true; }行intent.putExtra(DevicePolicyManager.EXTRA DEVICE_ADMIN,mDeviceAdminSample)指出mDeviceAdminSample(這是一個DeviceAdminReceiver成分)是目標的策略。此行調用在圖2中,它通過添加設備管理員向系統指導用戶(或允許他們拒絕它)中所示的用戶界面。
DevicePolicyManager mDPM; ... private boolean isActiveAdmin() { return mDPM.isAdminActive(mDeviceAdminSample); }管理策略
DevicePolicyManager mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
本節將介紹如何使用DevicePolicyManager來執行管理任務:
Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD); startActivity(intent);設置密碼質量
DevicePolicyManager mDPM; ComponentName mDeviceAdminSample; ... mDPM.setPasswordQuality(mDeviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);設置最小密碼長度
DevicePolicyManager mDPM; ComponentName mDeviceAdminSample; int pwLength; ... mDPM.setPasswordMinimumLength(mDeviceAdminSample, pwLength);設置最大密碼嘗試失敗
DevicePolicyManager mDPM; ComponentName mDeviceAdminSample; int maxFailedPw; ... mDPM.setMaximumFailedPasswordsForWipe(mDeviceAdminSample, maxFailedPw);設置密碼過期超時
DevicePolicyManager mDPM; ComponentName mDeviceAdminSample; long pwExpiration; ... mDPM.setPasswordExpirationTimeout(mDeviceAdminSample, pwExpiration);根據病史限制密碼
DevicePolicyManager mDPM; ComponentName mDeviceAdminSample; ... long timeMs = 1000L*Long.parseLong(mTimeout.getText().toString()); mDPM.setMaximumTimeToLock(mDeviceAdminSample, timeMs);您也可以通過編程告訴設備,立即鎖定:
DevicePolicyManager mDPM; mDPM.lockNow();執行數據擦除
DevicePolicyManager mDPM; mDPM.wipeData(0);該wipeData()方法作為參數的附加選項的位掩碼。目前該值必須是0。
private CheckBoxPreference mDisableCameraCheckbox; DevicePolicyManager mDPM; ComponentName mDeviceAdminSample; ... mDPM.setCameraDisabled(mDeviceAdminSample, mDisableCameraCheckbox.isChecked());存儲加密
DevicePolicyManager mDPM; ComponentName mDeviceAdminSample; ... mDPM.setStorageEncryption(mDeviceAdminSample, true);查看設備管理API樣本如何啟用加密存儲一個完整的例子。
readme:1、這個demo中沒有對多次點擊同一個聲音文件做詳細處理,偶爾會有崩潰,用的時候需要注意。2、按住錄音按鈕錄音過程中,只對豎直方向處理了一下,水平方向沒寫;
先看看效果:實現代碼:public class ScrollBanner extends LinearLayout { private TextView mBanner
什麼是AppWidget?AppWidget就是我們平常在桌面上見到的那種一個個的小窗口,利用這個小窗口可以給用戶提供一些方便快捷的操作。 今天的目標就是怎麼創建一個簡單
我們都知道Logcat是我們Android開發調試最常用的一個工具,但是Android Studio默認的Logcat調試的顏色是一樣的,我們不好區分verbose、de