關於這個東西有神魔用,我現在只知道一個xml文件上的功能都能夠完成,如下:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <limit-password /> //限制密碼 <watch-login /> //查看登錄 <reset-password /> //重置密碼 <force-lock /> //鎖屏 <wipe-data /> //清除數據 <expire-password /> //密碼到期時間 <encrypted-storage /> //加密存儲 <disable-camera /> //關閉相機 </uses-policies> </device-admin>
我也只用過 <reset-password /> <force-lock /> <wipe-data /> 這三個功能
關於如何使用?這里寫個步驟會看的簡單一點:
First, 整一個類繼承 DeviceAdminReceiver ,DeviceAdminReceiver是個廣播接收者(看name應該也能猜出吧)
Second, 在清單文件中注冊自己剛剛建立的廣播接收者,在注冊時要注意在 meta-data 中要寫入一個xml 的文件其實就是我們上面的那個功能文件表
Third,啟動我們的設備管理器並使用相關的功能
下面看代碼學習:
第一步:
這里我並未實現 DeviceAdminReceiver 的任何方法,但是我們仍然可以用上面列表中的功能
public class DeviceAdmin extends DeviceAdminReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub super.onReceive(context, intent); System.out.println(); } }
第二部:
這里是一個 廣播接收者的注冊,注意紅色的兩行
<receiver android:name="com.example.broadcastreceiver.DeviceAdmin" android:description="@string/sample_device_admin_description" android:label="@string/sample_device_admin" 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>
第三步:
mDevicePolicyManager=(DevicePolicyManager)arg0.getSystemService(Context.DEVICE_POLICY_SERVICE);
mComponentName=new ComponentName(arg0, DeviceAdmin.class);
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponentName); intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "設備管理器"); startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
使用功能
if (mDevicePolicyManager.isAdminActive(mComponentName)) { mDevicePolicyManager.lockNow(); // 鎖屏同時清除密碼 System.out.println("LOCKSCREEN" + "我執行了"); mDevicePolicyManager.resetPassword("789", 0);
}
if (mDevicePolicyManager.isAdminActive(mComponentName)) {
mDevicePolicyManager.lockNow();
mDevicePolicyManager.wipeData(0);
}
如上,簡單的設備管理器功能就使用了。
關於設備管理器注冊時不聲明為android.app.action.DEVICE_ADMIN_ENABLED 也能夠執行我會再寫一篇查看