【问题标题】:Prevent user to disable the app from app info - Android防止用户从应用信息中禁用应用 - Android
【发布时间】:2015-10-21 15:25:05
【问题描述】:

我正在构建一个应用,我希望阻止用户从应用信息中禁用或卸载该应用。该应用将手动分发(不会在 Play 商店中发布),并且仅安装在组织设备上。

我可以通过以下方法阻止应用程序的卸载:

  • root 设备
  • 在 /system/priv-app 文件夹中安装应用程序
  • 取消根设备

成功执行上述步骤后,卸载按钮不可见,但禁用按钮在那里。是否也有类似的方法可以防止“禁用”选项?

谢谢

【问题讨论】:

  • 这会引起巨大的安全问题。你为什么要这样做?
  • 此应用程序是为组织而构建的,该应用程序将仅安装在该特定组织拥有的设备上,而不会转到用户设备上。该应用程序旨在监控设备使用情况并收集一些数据进行分析。
  • 要求组织分发他们自己的设备以及他们的应用程序的操作系统。无论哪种方式,您都在监视用户,并且可能在某些方面侵犯了他们的隐私。
  • 只是为了扩展@UmerFarooq 所说的内容。如果您可以强制用户不卸载甚至禁用应用程序,一旦它正在运行,那么用户就无法再控制设备(安全方面,这非常糟糕......但这正是制造商所做的。你甚至不能卸载他们的crapware)。

标签: android


【解决方案1】:

理论上使用 DeviceAdmin 并实现 DeviceAdminReceiver 注册 ACTION_DEVICE_ADMIN_DISABLED。在您的 onDisabled(Context context, Intent intent) 方法中,使用包管理器重新启用应用程序并发送适当的消息。

我认为您可能应该更仔细地查看设备管理员,看看您是否可以在该上下文中实现您的应用程序所做的任何事情,而无需您对手机进行 root。根植手机并安装某种私人应用程序听起来像是一场噩梦,因为它需要你做额外的工作,而且它还可能给你的用户手机带来一个巨大的安全漏洞。

【讨论】:

    【解决方案2】:

    你没有写你的应用程序做什么。我认为与其取消禁用应用程序的可能性,不如让他们不要卸载或禁用它。我认为您无法阻止他们在不进行更多系统修改的情况下禁用您的应用程序。

    无论它做什么,它都可能向您的服务器报告,而缺少报告则意味着他们不合作(或无法访问您的网络)。如果你给了他们设备,你应该要求他们按照你的规则使用它们。例如,它可以定期记录它的存在。如果那些日志(设备本地或远程)丢失,用户没有遵守规则。不需要知道他们到底在做什么。但你知道他们当时没有遵守规则。

    我认为您应该考虑使用管理 API,请参阅 http://developer.android.com/guide/topics/admin/device-admin.html 但是,我不喜欢您尝试完成的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多