Android要求超级用户删除,修改或读取根目录中除了只读系统之外的任何内容。
但是,我注意到即使没有root设备,某些应用程序也可以利用这些进程。例如,Norton能够在非root电话上进行设备擦除。有没有办法授予我的应用程序类似的访问权限?
答案 0 :(得分:11)
具有管理员权限的应用程序可以使用设备管理API。此API提供擦除设备的功能。
使用此功能,它不需要任何超级用户权限,只需设备管理员权限。
总结如何使用Device Administration API:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<wipe-data />
</uses-policies>
</device-admin>
您需要实施DeviceAdminReceiver以对您的应用感兴趣的各种管理事件作出反应。(如果您只对 wipe-device )(有关如何设置此接收器的更多详细信息:here)
您需要BIND_DEVICE_ADMIN权限
在某些时候(可能在启动时),您的应用必须触发ACTION_ADD_DEVICE_ADMIN,要求用户授予“设备管理权限”#34;到你的应用程序。 (一旦授予这些权利,就没有理由再次询问他们。用户始终可以从“设置”应用中取消授予这些权利)
当您的设置正确时(如果用户授予您应用的设备管理员权限),您可以调用DevicePolicyManager:
DevicePolicyManager devicePolicyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
devicePolicyManager.wipeData(0);
请注意,无法卸载具有设备管理员权限的应用。用户需要手动删除这些权限(使用“设置”应用),然后才能卸载它们。