android移动控件

vlk*_*kpo 6 android admin device

我不想做广告,但我的应用程序行为的示例应用程序是ESET防病毒.

我的应用程序的一个请求功能是,需要卸载密码.我将我的应用程序添加到设备管理员列表中,现在无法将其卸载.但你可以将Deactive app作为管理员设备.您可以转到设置>位置和安全>选择设备管理员并尝试取消激活ESET安全性它启动活动(我想从DeviceAdminReceiver.onDisableRequested())等待密码并且您的移动设备已被锁定.主页按钮,后退按钮甚至SwitchOff按钮都没有反应=>

Home,Back,SwitchOff和Camera按钮如何反应?

编辑 - 删除了第二个问题(我从手机中取出电池后 - ESET也不是设备管理员)

谢谢你的想法.

And*_*ich 2

好吧,抱歉 ESET,但这个功能看起来很有趣,所以我看了一下反编译的源代码:)

基本工作流程如下:

  • com.eset.ems.antitheft.receiver.AdminReceiver的子类DeviceAdminReceiver已注册广播操作DEVICE_ADMIN_ENABLED并且DEVICE_ADMIN_DISABLED
  • 当设备管理员被禁用时com.eset.ems.antitheft.receiver.AdminReceiver.onDisabled()调用
  • com.eset.ems.antitheft.LockActivity是从AdminReceiver.onDisabled()
  • LockActivity显示com.eset.ems.antitheft.LockingDialog最阻碍魔法发生的地方

至于主页和其他按钮阻止防病毒软件执行以下技巧 - 它使用Android 内部的ActivityManagerNative 。为了保持LockActivity所有其他活动的领先地位,它启动了一个不断调用ActivityManagerNative.moveTaskToFront()任务LockActivityID 的线程。在 API 级别 10 之前,反射用于访问ActivityManagermoveTaskToFront()类中的隐藏内容,而在 API 10 之后,它仅使用Android 代码库中的代码来访问它。也多次调用方法。这样做可能是为了取消长按电源按钮后出现的系统对话框。ActivityManagerNativeLockActivityLockingDialogActivityManagerNative.closeSystemDialogs()

至于停止执行DeviceAdminReceiver.onDisableRequested实际上我没有注意到代码中有什么特别的地方。它仅在禁用设备管理后启动活动,仅此而已。在我取出电池后,我的手机设备管理员被禁用。

  • 谢谢你提出这个好问题。我使用dex2jar(https://code.google.com/p/dex2jar/)工具来转换从ESET防病毒apk中提取的classes.dex文件。它生成可以使用任何反编译器查看的常规 jar 文件(特别是我使用 http://java.decompiler.free.fr/ 中的 JD,可能是最好的免费 Java 反编译器)。实际上就是这样,之后我有了源代码文件并且可以看到它是如何工作的。我刚刚从 logcat 中注意到,当我禁用 ESET 防病毒软件的设备管理并将其作为起点时,LockActivity 正在启动。 (3认同)