Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android API Guides---Administration

Android API Guides---Administration

編輯:關於Android編程

如果您是管理員,您可以利用API和系統能力來管理Android設備和控制訪問。
在ICS統一密鑰存儲訪問

搭載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樣本中,位於您的系統上為 / ApiDemos /應用/ src目錄/主/ JAVA / COM /例子/安卓/的API /應用/ DeviceAdminSample.java。


示例應用程序提供的設備管理功能的演示。它提出了一個用戶界面,讓他們能夠在設備管理應用程序的用戶。一旦啟用了該應用程序,他們可以使用這些按鈕在用戶界面中執行以下操作:
?設置密碼質量。
?指??定用戶的口令的要求,如最小長度,它必須包含數字字符的最小數目,等等。
?設置密碼。如果密碼不符合規定的政策,系統將返回一個錯誤。
?將擦除設備之前怎麼會出現很多失敗的密碼嘗試(即,恢復到出廠設置)。
?設置密碼將如何從現在開始不久到期。
?設置密碼歷史長度(長度指的是存儲在歷史舊密碼的數量)。這樣可以防止用戶重用他們以前使用的最後n個密碼之一。
?指??定存儲區域應該被加密,如果設備支持它。
?設置可在設備鎖定前經過的時間處於非活動狀態的最高金額。
?立即設備鎖。
?擦拭設備的數據(也就是,恢復出廠設置)。
?禁用攝像頭。

\

圖1.示例應用程序的屏幕截圖
開發一個設備管理中的應用
系統管理員可以使用設備管理API來編寫強制執行遠程/本地設備安全策略強制執行的申請。本節總結參與創建的設備管理應用程序的步驟。
創建清單
要使用設備管理API,應用程序的清單必須包括以下內容:?DeviceAdminReceiver的子類,包括以下內容:?TheBIND_DEVICE_ADMIN許可。
向ACTION DEVICE_ADMIN啟用意圖做出回應?The能力,在清單中表示為一個意圖過濾器。
?在元數據使用的安全策略的聲明。
下面是從設備管理樣品清單的摘錄:

 


    
        
        
    


    
    
        
    
需要注意的是:?下列屬性指的是示例應用程序駐留在ApiDemos / RES /價值/ strings.xml中的字符串資源。有關資源的詳細信息,請參閱應用程序資源。 ?android:標簽=“@字符串/活性樣品device_admin”指的是該活動的用戶可讀的標簽。
?android:標簽=“@字符串/ sample_device_admin”是指為允許用戶可讀的標簽。
?android:說明=“@字符串/樣品device_admin說明”是指權限的用戶可讀描述。一個描寫的特征通常比標簽更長,更豐富。
?安卓:權限=“android.permission.BIND_DEVICE_ADMIN”是一個DeviceAdminReceiver子類必須有,以確保只有系統可以與接收器交互(沒有應用程序可以被授予這個權限)的權限。這可以防止其他應用程序濫用你的設備管理應用。 ?android.app.action.DEVICE_ADMIN_ENABLED是一個DeviceAdminReceiver子類必須處理被允許管理設備的主要操作。這是設置當用戶使設備管理應用程序接收器。您的代碼通常處理這onEnabled()。要支持,接收方也必須要求BIND_DEVICE_ADMIN權限,以便其他應用程序不能濫用它。
?當用戶啟用了設備管理應用程序,給出了接收者的許可,以響應特定系統事件的廣播執行操作。當合適的事件發生時,應用程序可以征收的政策。例如,如果用戶試圖設置不符合策略要求一個新的密碼,應用程序可提示用戶選擇一個不同的密碼確實滿足要求。
?安卓:資源=“@ XML / device_admin_sample”聲明中的元數據使用的安全策略。元數據提供了如解析由DeviceAdminInfo類特定於設備管理員的其他信息,。以下是device_admin_sample.xml的內容:

 

 


  
    
    
    
    
    
    
    
    
  

在設計你的設備管理應用程序,你並不需要包括所有的政策,只是有關你的應用程序的人。對於manifest文件的更多討論,請參閱Android開發者指南。
實施代碼
設備管理API包括以下類:DeviceAdminReceiver基類實現設備管理組件。此類提供用於解釋由該系統發送的原始意圖動作的便利性。您的設備管理應用程序必須包括DeviceAdminReceiver subclass.DevicePolicyManager一種用於管理強制在設備上的政策類。這個類的大多數客戶端必須公布該用戶目前已經啟用了DeviceAdminReceiver。 instancesDeviceAdminInfo這個類是用於為設備管理員組件指定的元數據管理DevicePolicyManager一個或多個DeviceAdminReceiver政策。
這些類提供了一個功能齊全的設備管理應用程序的基礎。本節的其余部分將介紹如何使用DeviceAdminReceiver和DevicePolicyManager API編寫的設備管理應用程序。
子類DeviceAdminReceiver
要創建一個設備管理應用程序,你必須繼承DeviceAdminReceiver。該DeviceAdminReceiver類包含了一系列的回調,當發生特定事件時被觸發的。
在它的子類DeviceAdminReceiver,示例應用程序只顯示在響應特定事件Toast通知。例如:

 

 

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));
    }
...
}
使應用程序

其中一個主要事件的設備管理應用程序要處理的是用戶啟用應用程序。用戶必須明確使應用程序如要執行的策略。如果用戶選擇不使應用它仍然會存在於設備上,但其政策將不被執行,並且用戶不會得到任何的應用程序的優點。

當用戶執行觸發ACTION_ADD_DEVICE_ADMIN意圖的動作使應用程序的過程開始。在示例應用程序,當用戶點擊啟用管理員復選框出現這種情況。


當用戶點擊啟用管理員復選框,則顯示變為提示用戶激活設備管理應用程序,如圖2。
\
圖2.示例應用程序:激活應用程序


下面是當用戶點擊啟用管理員復選框該被執行的代碼。這具有觸發onPreferenceChange()回調的效果。當這種偏好的價值已經被用戶改變,即將被設置和/或持續回調被調用。如果用戶啟用應用程序時,顯示將變為提示用戶激活設備管理應用程序,如圖2否則,設備管理應用程序被禁用

 

 

@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方法isAdminActive()。請注意,DevicePolicyManager方法isAdminActive()以DeviceAdminReceiver組件作為它的參數:

 

 

DevicePolicyManager mDPM;
...
private boolean isActiveAdmin() {
    return mDPM.isAdminActive(mDeviceAdminSample);
}
管理策略

DevicePolicyManager是強制管理設備上的政策一個公共類。 DevicePolicyManager管理一個或多個DeviceAdminReceiver實例策略。


你得到的句柄DevicePolicyManager如下:

 

 

DevicePolicyManager mDPM =
    (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);

 

 

本節將介紹如何使用DevicePolicyManager來執行管理任務:
?設置密碼策略
?設置設備鎖定
?執行數據擦除

設置密碼策略

DevicePolicyManager包括用於設置和執行設備密碼策略的API。在設備管理API,密碼只適用於屏幕鎖定。介紹了常用的密碼相關的任務。


為設備設置密碼

此代碼顯示用戶界面提示用戶設置密碼:

 

Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
startActivity(intent);
設置密碼質量
密碼質量可以是以下DevicePolicyManager常量之一:
PASSWORD_QUALITY ALPHABETIC用戶必須輸入至少含有字母(或其它符號)characters.PASSWORD QUALITY_ALPHANUMERICThe用戶必須輸入至少含有數字和字母(或其它符號)characters.PASSWORD_QUALITY_NUMERICThe用戶的密碼必須輸入至少含有數字密碼的密碼字符。 PASSWORD_QUALITY_COMPLEXThe用戶必須輸入至少含有一個字母,一個數位和一個特殊symbol.PASSWORD_QUALITY_SOMETHINGThe策略的密碼需要某種密碼的,但並不關心它is.PASSWORD_QUALITY_UNSPECIFIED策略具有用於密碼沒有要求。
例如,這是你將如何設置密碼策略需要字母數字密碼:

 

 

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);
設置密碼過期超時
與Android3.0開始,您可以使用set密碼到期超時()方法來設置時,密碼將過期,表示為當一個設備管理員設置過期超時以毫秒為單位的增量。 例如:

 

 

DevicePolicyManager mDPM;
ComponentName mDeviceAdminSample;
long pwExpiration;
...
mDPM.setPasswordExpirationTimeout(mDeviceAdminSample, pwExpiration);
根據病史限制密碼
與Android3.0開始,您可以使用setPasswordHistoryLength()方法來限制用戶重新使用舊密碼的能力。此方法需要的長度參數,它指定許多舊密碼的存儲方式。當此政策是積極的,用戶無法輸入的最後n密碼相匹配的新密碼。這樣可以防止用戶一遍又一遍使用相同的密碼。該策略通常用於連同一組密碼到期超時(),這將強制用戶在指定的時間過去後,更新他們的密碼。
例如,該段禁止用戶重復使用任何他們的最後5密碼:

 

 

DevicePolicyManager mDPM;
ComponentName mDeviceAdminSample;
...
long timeMs = 1000L*Long.parseLong(mTimeout.getText().toString());
mDPM.setMaximumTimeToLock(mDeviceAdminSample, timeMs);
您也可以通過編程告訴設備,立即鎖定:

 

 

DevicePolicyManager mDPM;
mDPM.lockNow();
執行數據擦除


您可以使用DevicePolicyManager方法wipeData()將設備重置為出廠設置。如果設備丟失或被盜,這是很有用的。經常擦拭設備的決定是得到滿足一定條件的結果。例如,你可以使用setMaximumFailedPasswordsForWipe()聲明,設備應密碼嘗試失敗的具體數量後擦拭。

你擦數據如下:

 

 

DevicePolicyManager mDPM;
mDPM.wipeData(0);
該wipeData()方法作為參數的附加選項的位掩碼。目前該值必須是0。
禁用攝像頭
與Android4.0開始,您可以禁用攝像頭。需要注意的是,這並不必須是一個永久禁用。照相機可以動態地基於上下文,時間啟用/禁用,等等。
您可以控制攝像機是否通過使用setCamera殘疾人()方法關閉。例如,該片段設置相機根據復選框設置來啟用或禁用:

 

 

private CheckBoxPreference mDisableCameraCheckbox;
DevicePolicyManager mDPM;
ComponentName mDeviceAdminSample;
...
mDPM.setCameraDisabled(mDeviceAdminSample, mDisableCameraCheckbox.isChecked());
存儲加密

與Android3.0開始,您可以使用setStorageEncryption()方法來設置需要的存儲區域,如果支持的加密策略。


例如:

 

 

DevicePolicyManager mDPM;
ComponentName mDeviceAdminSample;
...
mDPM.setStorageEncryption(mDeviceAdminSample, true);
查看設備管理API樣本如何啟用加密存儲一個完整的例子。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved