有些应用程序可以检测到他们从电话/设备管理员删除的时间。我在Android开发者网站上搜索过,当用户点击我们在电话/设备管理器中的应用程序旁边的“打勾”复选框时,找不到触发该标志或接收器的标志或接收器。检测从电话/设备管理员删除的应用程序
回答
在广播接收器中,存在从DeviceAdminReceiver
类延伸的回调函数,如下所示。一旦用户点击取消激活按钮,此功能在设备管理员关闭应用程序之前调用onDisableRequested
,用户单击取消激活后,它会调用onDisabled
。 首先,我们必须调用启动器(主屏幕),然后锁定设备。 如果我们使用此逻辑,用户将无法停用。如果有更多的优化方式可以随意分享/更新。
@Override
public CharSequence onDisableRequested(Context context, Intent intent) {
Intent homeScreenIntent = new Intent(Intent.ACTION_MAIN);
homeScreenIntent.addCategory(Intent.CATEGORY_HOME);
homeScreenIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(homeScreenIntent);
DevicePolicyManager deviceManger;
deviceManger = (DevicePolicyManager) context.getSystemService(
Context.DEVICE_POLICY_SERVICE);
deviceManger.lockNow();
return context.getString("App won't work if you disable this setting");
}
设备管理员在被用户禁用时会收到动作ACTION_DEVICE_ADMIN_DISABLED,您可以在onDisabled(Context, Intent)中处理该动作。您仍然可以在onDisabled方法中使用DevicePolicyManager特权API,但不能在返回后使用。
但我想阻止它禁用我的应用程序。如果我在onDisabled中写了一些东西,那么用户已经禁用了它。 onDisableRequested(上下文上下文,意图意图)中有另一个函数,我可以在用户禁用之前编写一个警告消息。但是,如果我在这里以手动方式锁定手机,则在用户解锁手机后,它仍会从同一屏幕继续。我怎样才能防止它? –
如果用户尝试禁用设备管理员(在onDisabled中),则可以擦除设备(出厂重置),这会删除您希望保护的任何明智数据。 由于用户无论如何都可以擦除设备,并且会删除设备管理员,所以这是最好的选择。 – Fred
如果您正在寻找更强大的功能,如防止出厂重置或在出厂重置后防止使用设备,您可以尝试设备所有者模式,该模式需要在首次设置设备时进行设置。有关[我的这个响应]中的两种模式的更多细节(https://stackoverflow.com/a/45632137/4816506)。 – Fred
- 1. Android:以编程方式从设备管理员删除我的应用程序?
- 2. 如何禁用设备管理员应用程序的安装?
- 3. 测试后从真实设备中删除应用程序
- 4. 预装的设备管理员应用程序
- 5. 如何让我的应用程序设备管理员在android?
- 6. JmDNS设备删除检测
- 7. 使用设备管理员应用程序+ android
- 8. 如何删除设备上的用户作为管理员
- 9. Android:设备管理应用程序
- 10. 检测Android应用程序中的设备电话号码时出错
- 11. 检测管理员RDP会话
- 12. Android:设备管理员:启动设备管理员服务
- 13. WSO2 EMM:从设备管理中删除设备
- 14. 检测设备是否支持电话?
- 15. 如何在设备管理员停用时擦除Android设备?
- 16. Android电话管理器检测SIM卡
- 17. 如何删除在Android上启用了活动设备管理员的应用程序?
- 18. 如何在我的应用程序的设备管理员中设置提示
- 19. 管理员可以从Firebase应用程序中删除用户吗?
- 20. 页面管理员作为应用程序的管理员?
- 21. 从iOS应用程序中检测附近的移动设备
- 22. 从应用程序中检测配对的蓝牙设备
- 23. iOS应用程序 - 拦截当用户从设备上删除应用程序
- 24. 设备管理员在android
- 25. 设备管理员密码
- 26. Django管理员不会让我删除其验证管理员应用程序中的用户
- 27. 如何从管理员运行非管理员进程c#应用程序
- 28. 设备策略管理员无法检索设备策略
- 29. 按下应用程序后,从任务管理器中删除应用程序
- 30. 从Google+管理应用程序中删除应用程序页面
你的问题是关于*检测*当用户移除设备管理员,而不是防止它。这并没有回答这个问题。 – Fred
此外,由于用户无法卸载设备管理员,因此这会阻止用户卸载您的应用,并且他们将被迫重置设备。除非你想要对你的应用程序进行糟糕的评论,否则你不应该那样做 – Fred
我的问题是关于“检测应用程序”被“删除”,并且您的答案没有资格,因为您给onDisabled(Context,Intent)函数作为答案,这是不正确的。你必须使用onDisableRequested来知道他们是否被删除。你告诉你的那个已经被删除(不会被删除)。除了第二条评论之外,还需要在onDisableRequested函数上设置一个标志,以防止用户始终无法卸载,只是首选项不再检查。 –