关于Android Device Administratioin介绍可参见文档 docs/guide/topics/admin/device-admin.html 小节。
公司主营业务:成都网站设计、做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出曾都免费做网站回馈大家。
本文通过示例演示Android Device Policy管理的实现。
1.示例基本操作图
上图是本示例的主界面,通过应用程序来实现设备管理,本示例实现密码设置管理。
1.1 通过点击“启动设备管理器”按钮来激活设备管理
应用程序用通知设备管理启用,用户点击激活,应用程序具备设备管理能力。
1.2 通过点击“设置密码规则”按钮来设置锁屏密码的限制规则,要使用该策略需要在设备管理的使用策略列表中添加limit-password.
示例中调用了设置新密码的ACTION(DevicePolicyManager.ACTION_SET_NEW_PASSWORD),通过设置后,看以看到屏幕锁屏需要密码。
1.3 通过点击“修改密码”按钮则可以将文本框中的内容作为锁屏密码,该步骤可以通过程序完成。
调用DevicePolicyManager的重置密码方法(resetPassword),即可在应用程序中对锁屏密码进行重置。
2. 具体实现
实现上述整个示例需要:
a.界面布局;实际应用中根据具体情况而定
b.DevicePolicyManager类的具体使用
c.DeviceAdminReceiver类的子类话,来实现具体广播事件的处理
d.AndroidManifest.xml文件中广播接收类的配置
c.应用程序中需要的设备管理策略列表
注:本示例代码使用了Butterknife框架。
2.1 示例程序界面(layout/activity_device_admin.xml)
2.2 Activity类和自定义的DeviceAdminReceiver类
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); } //单击启用设备管理按钮 @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)); intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "启动设备管理器"); startActivityForResult(intent, 1); } //单击设置密码规则按钮 @OnClick(R.id.pwd_rule_set_button) public void onClickPwdRuleSetButton(Button button) { Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD); startActivityForResult(intent, 2); } //单击修改密码按钮 @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, "密码修改成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "密码修改失败", Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(this, "没有Active Admin", Toast.LENGTH_SHORT).show(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case 1: if (resultCode == RESULT_OK) { Toast.makeText(this, "设备管理器开启成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "设备管理器开启失败", Toast.LENGTH_SHORT).show(); } break; case 2: if (resultCode == RESULT_OK) { Toast.makeText(this, "密码规则设置成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "密码规则设置失败", Toast.LENGTH_SHORT).show(); } break; default: break; } } //自定义的设备管理广播接收类,可以重写DeviceAdminReceiver中的方法,来实现具体功能 public static class MyDeviceAdminReceiver extends DeviceAdminReceiver { /** * 重写其中方法 ** More */ @Override public void onDisabled(Context context, Intent intent) { super.onDisabled(context, intent); //设备管理禁用 } @Override public void onEnabled(Context context, Intent intent) { super.onEnabled(context, intent); //设备管理启用 } } }
2.3 配置设备管理接收者
xml/device_admin内容:
示例生成apk,该应用具体了设备管理的功能。