我的应用如何在非root设备上访问管理员级权限?

PS3*_*der 5 java android root

Android要求超级用户删除,修改或读取根目录中除了只读系统之外的任何内容.

但是,我注意到即使没有root设备,一些应用程序也可以利用这些进程.例如,Norton能够在非root电话上进行设备擦除.有没有办法授予我的应用程序类似的访问权限?

ben*_*n75 11

具有管理员权限的应用程序可以使用设备管理API.此API提供擦除设备的功能.

使用它,它不需要任何超级用户权限,它只需要设备管理员权限.

总结如何使用设备管理API:

  1. 您需要一个资源文件来声明您的应用所需的策略
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-policies>
    <wipe-data />
  </uses-policies>
</device-admin>
Run Code Online (Sandbox Code Playgroud)
  1. 您需要实现一个DeviceAdminReceiver来响应您的应用感兴趣的各种管理事件.(如果您只对擦除设备感兴趣,那么空实现就足够了)(有关如何设置此接收器的更多详细信息:此处)

  2. 您需要BIND_DEVICE_ADMIN权限

  3. 在某些时候(可能在启动时),您的应用必须触发ACTION_ADD_DEVICE_ADMIN,要求用户向您的应用授予"设备管理权限".(一旦授予这些权利,就没有理由再次询问它们.用户始终可以从"设置"应用中取消授予这些权限)

  4. 当您的设置正确时(如果用户授予您的应用程序的设备管理员权限),您可以调用DevicePolicyManager:

DevicePolicyManager devicePolicyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
devicePolicyManager.wipeData(0);
Run Code Online (Sandbox Code Playgroud)

请注意,无法卸载具有设备管理员权限的应用.用户需要手动删除这些权限(使用"设置"应用),然后才能卸载它们.