Android ApiDemos示例解析(21):App->Device Admin

Device Admin示例介紹瞭類DeviceAdminReceiver,DevicePolicyManager和ActivityManager。

類DevicePolicyManager 用於管理Android設備定義的一些策略,主要指密碼定義的長度,密碼是否要含大寫字母,小寫字母等設置密碼需要滿足的規范,鎖定設備或是清除所有用戶數據,這個類一般需要配合DeviceAdminReceiver來使用。DeviceAdminReceiver派生於BroadcastReceiver,可以接受Android操作系統發出的Intent事件:如密碼過期瞭,密碼更新等。

當它Publish在AndroidManifest.xml作為BroadcastReceiver定義時,必須處理android.app.action.DEVICE_ADMIN_ENABLED和設置android.permission.BIND_DEVICE_ADMIN權限:

<receiver android:name=”.app.DeviceAdminSample”
android:label=”@string/sample_device_admin”
android:description=”@string/sample_device_admin_description”
android:permission=”android.permission.BIND_DEVICE_ADMIN”>
<meta-data android:name=”android.app.device_admin”
android:resource=”@xml/device_admin_sample” />
<intent-filter>
<action android:name=”android.app.action.DEVICE_ADMIN_ENABLED” />
< /intent-filter>
< /receiver>

使用DevicePolicyManager 來設置密碼定義的Policy

[java] 
void updatePolicies() { 
 SharedPreferences prefs = getSamplePreferences(this); 
 final int pwQuality = prefs.getInt(PREF_PASSWORD_QUALITY, 
 DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED); 
 final int pwLength = prefs.getInt(PREF_PASSWORD_LENGTH, 0); 
 final int maxFailedPw = prefs.getInt(PREF_MAX_FAILED_PW, 0); 
  
 boolean active = mDPM.isAdminActive(mDeviceAdminSample); 
 if (active) { 
 mDPM.setPasswordQuality(mDeviceAdminSample, pwQuality); 
 mDPM.setPasswordMinimumLength(mDeviceAdminSample, pwLength); 
 mDPM.setMaximumFailedPasswordsForWipe(mDeviceAdminSample, maxFailedPw); 
 } 

void updatePolicies() {
 SharedPreferences prefs = getSamplePreferences(this);
 final int pwQuality = prefs.getInt(PREF_PASSWORD_QUALITY,
 DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
 final int pwLength = prefs.getInt(PREF_PASSWORD_LENGTH, 0);
 final int maxFailedPw = prefs.getInt(PREF_MAX_FAILED_PW, 0);
 
 boolean active = mDPM.isAdminActive(mDeviceAdminSample);
 if (active) {
 mDPM.setPasswordQuality(mDeviceAdminSample, pwQuality);
 mDPM.setPasswordMinimumLength(mDeviceAdminSample, pwLength);
 mDPM.setMaximumFailedPasswordsForWipe(mDeviceAdminSample, maxFailedPw);
 }
}
鎖定設備方法:

[java] 
mDPM.lockNow(); 
mDPM.lockNow();
清除所有用戶數據(相當於Master Reset)

[java]
mDPM.wipeData(0); 
mDPM.wipeData(0);
ActivityManager類一般用來獲取Android系統中所有運行的Activity的信息,有點類似Windows中的Task Manager。可以獲得 Memory ,Process ,Service等信息。而在例子中使用瞭一個很好笑的方法:isUserAMonkey ,用來判斷當前設備使用者是否為一隻猴子:-)。真不知道如果來判斷,我以為如果這是亂敲鍵盤會使這個函數返回“真”。結果不是:)。

總的來說這些類和方法在一般的應用中用到的地方很少,有些印象就可以瞭。

作者:mapdigit
 
 

發佈留言