获取超级管理员权限步骤:

1.创建 MyAdmin 的广播接受者 继承 DeviceAdminReceiver

如:

package cn.itcast.lockscreen;
import android.app.admin.DeviceAdminReceiver;
public class MyAdmin extends DeviceAdminReceiver {
}


配置如下:

<receiver android:name=".MyAdmin">
<meta-data android:name="android.app.device_admin"
android:resource="@xml/my_admin" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>

</receiver>


添加Xml文件:
my_admin.xml
<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
</uses-policies>
</device-admin>


2.获取IDevicePolicyManager

Method method = Class.forName("android.os.ServiceManager")
.getMethod("getService", String.class);
IBinder binder = (IBinder) method.invoke(null,
new Object[] { Context.DEVICE_POLICY_SERVICE });
mService = IDevicePolicyManager.Stub.asInterface(binder);

3.注册广播接受者为admin设备
ComponentName mAdminName = new ComponentName(this, MyAdmin.class);
if (mService != null) {
if (!mService.isAdminActive(mAdminName)) {
Intent intent = new Intent(
DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra (DevicePolicyManager.EXTRA_DEVICE_ADMIN,mAdminName);
startActivity(intent);
}

}


示例代码:

LockscreenActivity.java:

package cn.itcast.lockscreen;import android.app.Activity;import android.app.admin.DevicePolicyManager;import android.content.ComponentName;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;/** * device admin : 获取设备的超级管理员权限 *  * @author zehua *  */public class LockscreenActivity extends Activity implements OnClickListener {private Button bt_lock;private Button bt_wipe;DevicePolicyManager manager;ComponentName mAdminName;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);bt_lock = (Button) this.findViewById(R.id.button1);bt_wipe = (Button) this.findViewById(R.id.button2);bt_lock.setOnClickListener(this);bt_wipe.setOnClickListener(this);// 获取IDevicePolicyManagermanager = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);// 注册广播接受者为admin设备mAdminName = new ComponentName(this, MyAdmin.class);if (!manager.isAdminActive(mAdminName)) {Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName);startActivity(intent);}}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.button1: // 锁屏manager.resetPassword("123", 0);manager.lockNow();// manager.removeActiveAdmin(mAdminName);break;case R.id.button2: // 重置手机为出厂模式//外部数据不会被删除manager.wipeData(0);break;}}}
MyAdmin.java:

package cn.itcast.lockscreen;import android.app.admin.DeviceAdminReceiver;public class MyAdmin extends DeviceAdminReceiver {}

更多相关文章

  1. Android 监听 USB 接口的插拔状态
  2. Android中对app应用内存的分配
  3. adb使用帮助
  4. Android 蓝牙设备与手机之间的数据传输
  5. android 笔记 --- Android安全机制之设备管理
  6. [置顶] Android 4.2 Wifi Display 之 Settings 源码分析(一)
  7. 手把手教你实现Android中智能设备数据表格绘制
  8. 杂谈:Android or iOS,我们何去何从?
  9. 一款用于在 Android 设备上获取照片(拍照或从相册、文件中选择)、

随机推荐

  1. android sqlite用法
  2. android图片缩放(指定大小) drawable获取图
  3. AndroidStudio如何配置NDK/JNI开发环境
  4. android KeyboardView使用
  5. android listView 自定义布局结合Checked
  6. Android MultiDex 解决 64K 限制,方法数超
  7. android里的继承浅析
  8. android中选择文件,部分手机找不到文件路
  9. 第六天android:手写笔和水波纹
  10. android 数字键盘