android 获取超级管理员权限,进行锁屏、恢复出厂设置
16lz
2021-01-24
获取超级管理员权限步骤:
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>
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 {}
更多相关文章
- Android 监听 USB 接口的插拔状态
- Android中对app应用内存的分配
- adb使用帮助
- Android 蓝牙设备与手机之间的数据传输
- android 笔记 --- Android安全机制之设备管理
- [置顶] Android 4.2 Wifi Display 之 Settings 源码分析(一)
- 手把手教你实现Android中智能设备数据表格绘制
- 杂谈:Android or iOS,我们何去何从?
- 一款用于在 Android 设备上获取照片(拍照或从相册、文件中选择)、