获取超级管理员权限步骤:
1.创建 MyAdmin 的广播接受者 继承 DeviceAdminReceiver
如:
package cn.itcast.lockscreen; import android.app.admin.DeviceAdminReceiver; public class MyAdmin extends DeviceAdminReceiver { }
配置如下:
android:resource="@xml/my_admin" />
添加Xml文件:
my_admin.xml
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 ponentName;
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;
@Override
public 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);
// 获取IDevicePolicyManager
manager = (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);
}
}
@Override
public 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 {
}