Android需要超级用户来删除、修改或读取根目录中的任何内容,但系统是只读的。
但是,我注意到,即使没有根设备,一些应用程序也能够利用这些进程。例如,Norton能够在非根手机上执行设备擦除。是否有方法授予我的应用程序类似的访问权限?
具有管理员权限的应用程序可以使用设备管理API。此API提供擦除设备的能力。
使用这个,它不需要任何超级用户权限,它只需要设备管理员权限。
要总结如何使用设备管理API,请执行以下步骤:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<wipe-data />
</uses-policies>
</device-admin>
您需要实现一个DeviceAdminReceiver来对应用程序感兴趣的各种管理事件做出反应。(如果您只对擦除设备感兴趣,一个空的实现就足够了)(关于如何设置此接收器的更多细节:这里)
您需要BIND_DEVICE_ADMIN权限
在某个时刻(可能是在启动时),您的应用程序必须触发ACTION_ADD_DEVICE_ADMIN,请求用户向您的应用程序授予“设备管理权限”。(一旦这些权限被授予,就没有理由再请求它们。用户始终可以从设置应用程序中取消授予这些权限)
当您的设置正确时(并且如果用户授予您的应用程序设备管理权限),您可以调用DevicePolicyManager:
DevicePolicyManager devicePolicyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
devicePolicyManager.wipeData(0);
请注意,不能卸载具有设备管理员权限的应用程序。用户需要手动删除这些权限(使用设置应用程序),然后才能卸载它。
我试图建立一个基于libSuperuser的应用程序。我的设备是根,但我有两个问题: 1) 在出口我的apk后,出于某种原因,它正在索取证书。我需要导出对根设备没有意义的应用程序签名。如果设备已根目录,为什么需要签名? 2) 运行应用程序时,我检查应用程序是否具有调用Shell的root权限。苏。available()在libsuperuser中可用,返回“false”。这意味着该应用程序没有ro
我正在开发一个android应用程序。我想从扎根设备中保存我的应用程序。我成功地限制了我的应用程序与根设备,但一个根设备有magisk应用程序,所以在这个magis应用程序的帮助下,用户可以打开我的应用程序在根设备也。有人能帮我吗?提前谢了。 我的代码是 私有静态布尔checkRootMethod1(){String buildTags=build.tags;return buildTags!=n
问题内容: 当我尝试通过Java ProcessBuilder类在任务计划程序中创建新任务时,出现Windows Vista拒绝访问错误。在XP上,它可以正常工作。 当我使用“以管理员身份运行”选项时,它也将在Vista上运行。 但是,这是一个额外的步骤,用户可能对此一无所知。当用户仅双击应用程序图标时,它将失败并拒绝访问。我的问题是如何在启动后立即强制Java应用重新获得管理员权限? 问题答案:
如何使用与启动的应用程序相同的UID打开shell?
我希望这个应用程序能够访问Graph API上的mail.read作用域,仅供特定的用户组使用。 我设法让整个组织都能进入。(点击Azure门户>Azure Active Directory>应用注册>MyApp>设置>权限中的“授予权限”按钮)。如何将这些权利限制在特定的用户群体,而不必提示任何个人同意?
有没有一种方法可以在非根android设备上使用系统签名的应用程序进行系统范围的网络过滤? 类似于在根设备中使用iptables binary的应用程序。