admin管理员组文章数量:1432504
设备管理器
1,注册DeviceAdminReceiver广播接收者
接收设备超级管理员的广播
import android.app.admin.DeviceAdminReceiver;
public class MyAdmin extends DeviceAdminReceiver {
}
manifest中的声明:
<receiver
android:name="com.it360.mobilesafe.receivers.MyAdmin"
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>
2,描述文件
声明标题和描述
android:label ="@string/sample_device_admin"
android:description ="@string/sample_device_admin_description"
<string name="sample_device_admin_description">我是一个超级管理员的描述,我可以一键锁屏 </string>
<string name="sample_device_admin">锁屏 </string>
所需权限的描述
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin_sample" />
所需权限的描述文件:
xml/device_admin_sample
<device-admin xmlns:android="" >
<uses-policies >
<limit-password />
<!-- 设置密码规则 -->
<watch-login />
<!-- 监视屏幕解锁尝试次数 -->
<reset-password />
<!-- 更改屏幕解锁次数 -->
<force-lock />
<!-- 锁定屏幕 -->
<wipe-data />
<!-- 清除所有数据 -->
<expire-password />
<!-- 设置锁定屏幕密码的有效期 -->
<encrypted-storage />
<!-- 设置储存设备加密 -->
<disable-camera />
<!-- 停用相机 -->
</uses-policies >
</device-admin>
权限说明:
<limit-password /> | |
<watch-login /> | |
<reset-password /> | |
<force-lock /> | |
<wipe-data /> | |
<expire-password /> | |
<encrypted-storage /> | |
<disable-camera /> |
3,代码引导开启设备超级管理员
Tip:注册成功了,我们可以手动去设备管理器开启权限,但是太麻烦,所以,我们可以使用代码引导用户完成开启
获得设备策略管理器:
DevicePolicyManager dpm = (DevicePolicyManager ) getSystemService(DEVICE_POLICY_SERVICE);
使用代码引导激活设备管理员:
// 点击激活
cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// 声明要激活的组件名称
ComponentName mDeviceAdminSample = new ComponentName(
LockScreenActivity. this, MyAdmin.class);
if (isChecked) {
// 激活设备管理员
Intent intent = new Intent();
intent.setAction(DevicePolicyManager. ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager. EXTRA_DEVICE_ADMIN,
mDeviceAdminSample);
intent.putExtra(DevicePolicyManager. EXTRA_ADD_EXPLANATION,
"一键锁屏" );
startActivityForResult(intent, 0);
} else {
// 取消激活管理员
dpm.removeActiveAdmin(mDeviceAdminSample);
}
}
});
检查设备管理员是否开启,以便初始化checkbox,
// 初始化 cb
ComponentName who = new ComponentName( this, MyAdmin.class);
if (dpm .isAdminActive(who)) {
cb.setChecked( true);
} else {
cb.setChecked( false);
}
及intent所返回的onActivityResult,修复bug
// 返回是否激活
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 检查用户是否开启了超级管理员
// 声明要激活的组件名称
ComponentName who = new ComponentName(this, MyAdmin.class);
if (dpm .isAdminActive(who)) {
cb.setChecked( true);
} else {
cb.setChecked( false);
}
}
*ComponentName 对象
这是一个可以注册系统组件的对象,,可以注册四大组件
ComponentName who = new ComponentName(this, MyAdmin. class);
4,使用你的管理员应用(一键锁屏)
public class LockOneKeyActivity extends Activity {
private DevicePolicyManager dpm ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_lock_screen_onekey);
dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE );
// 设置解锁密码,“”代表无密码,删除密码值为“”,设置密码值为“123456”
dpm.resetPassword("" , 0);
// 锁屏
dpm.lockNow();
// 清除数据
//dpm.wipeData(0);
// 不显示当前activity
finish();
}
}
本文标签: 设备管理器
版权声明:本文标题:设备管理器 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1701292549a372993.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论