See the document Docs/guide/topics/admin/device-admin.html section for an introduction to Android Device Administratioin.
This article demonstrates the implementation of Android Device policy Management through an example.
1. Sample Basic Operation diagram
650) this.width=650; "src=" Http://s2.51cto.com/wyfs02/M01/76/D5/wKiom1ZdXWuh3pLzAADs8ui0CK4903.png "title=" Device-2015-11-27-181040.png "width=" 157 "height=" 280 "border=" 0 "hspace=" 0 "vspace=" 0 "style=" width:157px;height : 280px; "alt=" Wkiom1zdxwuh3plzaads8ui0ck4903.png "/>
is the main interface of this sample, which implements device management through the application, this example implements password setting management.
1.1 Activate device management by tapping the "Boot Device Manager" button
650) this.width=650; "src=" Http://s4.51cto.com/wyfs02/M00/76/D5/wKiom1ZdXkOC_Tt0AAExp-CnAww052.png "title=" Device-2015-12-01-164401.png "width=" 157 "height=" 280 "border=" 0 "hspace=" 0 "vspace=" 0 "style=" width:157px;height : 280px; "alt=" Wkiom1zdxkoc_tt0aaexp-cnaww052.png "/>
Application with notification device management enabled, user click Activation, the application has device management capabilities.
1.2 Set the lock screen password restriction rule by clicking on the "Set Password Rule" button to use this policy to add Limit-password to the list of usage policies for device management.
650) this.width=650; "src=" Http://s4.51cto.com/wyfs02/M01/76/D5/wKioL1ZdXzHDZTq0AAC_1sgm19Y095.png "style=" width : 157px;height:280px; "title=" Device-2015-11-27-181109.png "width=" 157 "height=" 280 "border=" 0 "hspace=" 0 "vspace=" 0 " alt= "Wkiol1zdxzhdztq0aac_1sgm19y095.png"/>650) this.width=650; src= http://s4.51cto.com/wyfs02/M00/76/D6/ Wkiom1zdxs3zebotaaef044qb-4443.png "style=" width:157px;height:280px; "title=" Device-2015-11-27-181136.png "width= "157" height= "280" border= "0" hspace= "0" vspace= "0" alt= "wkiom1zdxs3zebotaaef044qb-4443.png"/>650) this.width=650 ; "Src=" Http://s3.51cto.com/wyfs02/M00/76/D6/wKiom1ZdXtCQrB4dAAFF2tcY6NY804.png "style=" width:157px;height:280px ; "title=" Device-2015-12-01-164441.png "width=" 157 "height=" 280 "border=" 0 "hspace=" 0 "vspace=" 0 "alt=" Wkiom1zdxtcqrb4daaff2tcy6ny804.png "/>
The example calls the ACTION (Devicepolicymanager.action_set_new_password) that sets the new password, and after setting it, the password is required to see the screen lock screen.
1.3 By tapping the "Change Password" button, you can use the contents of the text box as the lock screen password, which can be done through the program.
650) this.width=650; "src=" Http://s3.51cto.com/wyfs02/M01/76/D6/wKiom1ZdYALAigjDAAFtasmTyCs591.png "title=" Device-2015-12-01-164517.png "width=" 157 "height=" 280 "border=" 0 "hspace=" 0 "vspace=" 0 "style=" width:157px;height : 280px; "alt=" Wkiom1zdyalaigjdaaftasmtycs591.png "/>
The lock screen password can be reset in the application by calling the Devicepolicymanager Reset Password method (ResetPassword).
2. Concrete implementation
Implementing the entire example above requires:
A. The layout of the interface, depending on the circumstances of the actual application
Specific use of the B.devicepolicymanager class
C.deviceadminreceiver class of subclasses to implement the handling of specific broadcast events
The configuration of the broadcast receive class in the D.androidmanifest.xml file
C. List of device management policies required in the application
Note: This sample code uses the Butterknife framework.
2.1 Sample Program Interface (Layout/activity_device_admin.xml)
<?xml version= "1.0" encoding= "Utf-8"? ><linearlayout xmlns:android= "http// Schemas.android.com/apk/res/android " android:layout_width= "Match_parent" android:layout_height= "Match_parent" android:background= "#f7f1f1" android:orientation= "vertical" android:padding= "15DP" > <LinearLayout android:layout_width= "Match_parent" android:layout_height = "Wrap_content" android:layout_gravity= "Center_horizontal" android:orientation= "Horizontal" > <EditText android:id= "@+id/pwd_edittext" android:layout_width= "0DP" android:layout_height= "Wrap_content" android:layout_margin= "10DP" android:layout_weight= "3" android:hint= "6-bit number" android: Textcolor= "@android: Color/black"/> <button android:id= "@+id/modify_pwd_button" android:layout_width= "0DP" android:layout_height= "Wrap_content" android:layout_margin= "10DP" android:layout_weight= "1.5" android:text= "Change Password"/> </linearlayout> <button android:id= "@+id/pwd_rule_set_button" android : layout_width= "match_parent" android:layout_height= "Wrap_ Content " android:text=" Set password Rules "/> < Button android:id= "@+id/device_admin_button" android:layout_width= "Match_parent" android:layout_height= "Wrap_content" android:text= "Enable device management "/></linearlayout>
2.2 Activity class and custom Deviceadminreceiver class
package secondriver.sdk.activity;import android.app.activity;import android.app.admin.deviceadminreceiver;import android.app.admin.devicepolicymanager;import Android.content.componentname;import android.content.context;import android.content.intent;import android.os.Bundle;import android.widget.Button;import android.widget.EditText;import Android.widget.toast;import butterknife. Bind;import butterknife. Butterknife;import butterknife. onclick;import secondriver.sdk.r;/** * author : secondriver * created : 2015/11/27 */public class deviceadminactivity extends activity { @Bind (R.id.pwd_edittext) public EditText pwdEditText; private DevicePolicyManager mDevicePolicyManager; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate ( Savedinstancestate); setcontentview (R.layout.activity_device_ admin); butterknife.bind (this); mDevicePolicyManager = (Devicepolicymanager) getsystemservice (device_policy_ SERVICE); } //Click the Enable Device Management button @OnClick ( R.id.device_admin_button) public void onclickdevicebutton (Button button) { intent intent = new intent ( Devicepolicymanager.action_add_device_admin); intent.putextra ( Devicepolicymanager.extra_device_admin, new componentname (This, mydeviceadminreceiver.class)); &nbsP; intent.putextra (devicepolicymanager.extra_add_explanation, "boot Device Manager"); startactivityforresult (intent, 1); } //Click the Set Password Rule button @OnClick (R.id.pwd_rule_set_button) public void onclickpwdrulesetbutton (Button button) { intent intent = new intent (Devicepolicymanager.action_set_new_password); startactivityforresult (intent, 2); } //Click the Modify Password button @OnClick (R.id.modify_pwd_button) Public void onclickmodifypwdbutton (Button button) { string pwd = pwdedittext.gettext (). toString (); componentname reCeiver = new componentname (This, mydeviceadminreceiver.class); boolean active = mdevicepolicymanager.isadminactive (receiver); if (Active) { boolean rs = mdevicepolicymanager.resetpassword (pwd, Devicepolicymanager.reset_password_require_entry); if (RS) { toast.maketext (this, "Password modified successfully", toast.length_short). Show (); } else { toast.maketext (this, "Password modification failed", Toast.LENGTH_ Short). Show (); } } Else { toast.maketext (this, " No active admin ", toast.length_short). Show (); } } @Override protected void Onactivityresult (Int requestcode, int resultcode, intent data) { switch (Requestcode) { case 1: if (RESULTCODE&NBSP;==&NBSP;RESULT_OK) { toast.maketext (This, "Device Manager turned on successfully", toAst. Length_short). Show (); } else { toast.maketext (this, "Device Manager turned on failed", toast.length_short). Show (); } break; case 2: if (RESULTCODE&NBSP;==&NBSP;RESULT_OK) { toast.maketext (this, "Password rule set success", toast.length_short). Show (); } else { toast.maketext (this, " Password rule setup failed ", toast.length_short). Show (); } break; default: break; } } //The custom device management broadcast receive class, You can override the methods in Deviceadminreceiver to implement specific functions public static class mydeviceadminreceiver extends deviceadminreceiver { /** * overriding Methods * <p> * more */ @Override Public void ondisabled (context context, intent intent) { super.ondisabled (context, intent); //Device Management Disable } @Override Public void onenabled (context context, intent intent) { super.onenabled (context, intent); //Device management enabled &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;}&NBSP;&NBSP;&NBSP;&NBSP;}}
2.3 Configuring the Device management recipient
<activity android:name= ". Activity. Deviceadminactivity "/> <receiver android:name=". Activity. Deviceadminactivity$mydeviceadminreceiver " android:permission= "Android.permission.BIND_DEVICE_ADMIN" > <meta-data android:name= " Android.app.device_admin " android:resource= "@xml/device_admin"/> <intent-filter> <action android:name= " Android.app.action.DEVICE_ADMIN_ENABLED "/> </intent-filter> </receiver>
Xml/device_admin content:
<?xml version= "1.0" encoding= "Utf-8"? ><device-admin xmlns:android= "http// Schemas.android.com/apk/res/android "> <uses-policies> <!--Set password rules; control screen lock password length and allowed characters--> <limit-password/> <!--Monitor the number of screen lock unlock attempts If you have too many input errors, lock your phone or clear all data--> <watch-login/> <!--Reset the password for the screen lock; reset the new screen lock password--> <reset-password/> <!--forced lock screen, how and when to control screen lock screen-- > <force-lock/> <!--erase data; restore factory settings purge says there's data--> <wipe-data/> <!--banUse the camera, disable all device camera--> <disable-camera/> <!--encrypt data and encrypt stored application data--> <encrypted-storage/> <!--password expires; Force the user to change the screen lock password frequency-- <expire-password/> </ Uses-policies></device-admin>
The sample generates the APK, which specifically features the device management.
This article is from the "Red Horse Red" blog, please be sure to keep this source http://aiilive.blog.51cto.com/1925756/1718579
Android Device Management Service sample development