如何在没有root权限的情况下,以编程方式禁用应用程序?

5
我刚刚发现了一款可以在不需要root权限的情况下,后台禁用三星应用程序的应用:

https://play.google.com/store/apps/details?id=com.hecorat.packagedisabler

还有这个免费的:

https://play.google.com/store/apps/details?id=com.ospolice.packagedisabler

  1. 这怎么可能?它甚至没有显示一个系统类型的 alertDialog 来询问用户是否可以禁用该应用。他们找到了一个漏洞吗?

  2. 这只是针对一些三星应用吗?其他应用和公司呢?那里也可能吗?

  3. 同样的机制能用于其他操作吗?比如启用应用程序?

我目前没有三星设备,所以我无法检查这个应用。


我猜这可能与应用程序拥有设备管理员权限有关,不过不确定。 - Pedro Lobito
不,你不能仅通过设备管理员来完成这个。 - Piyush
@piyush 我明白了。您能否请展示一下使用三星提供的方式如何完成呢? - android developer
嗨,这是三星提供的整个SDK,称为Knox,它提供各种功能,包括此功能,您可以在此处查看https://seap.samsung.com/html-docs/android-standard/Default.htm,这基本上是为MDM目的而设计的。 - Piyush
@piyush,你能否展示一下这个功能的最小代码?我想知道它使用起来有多容易。也许我会将其添加到我的小型应用管理器应用程序中,作为某些仅限于根目录的功能的替代品:https://play.google.com/store/apps/details?id=com.lb.app_manager。还可以在应用程序上执行哪些其他操作? - android developer
显示剩余2条评论
2个回答

1

如果你的应用程序是设备所有者,可以使用DevicePolicyManager的setApplicationHidden API隐藏或取消隐藏应用程序。


有趣。你能展示一下如何做吗?它会禁用应用程序,还是只是隐藏它?而且,这就是这个应用程序的工作原理吗?一旦获得了这些特殊的管理员权限,你可以做什么?可以禁用任何应用程序吗?启用?卸载?它只适用于三星设备,还是所有设备都可以? - android developer
此内容仅适用于设备所有者,如果您的应用程序只是设备管理员,则无法使用此功能。 - Piyush
这只会隐藏应用程序,而不是禁用或卸载它。是的,Piyush是正确的。这是设备所有者的API。您需要将您的应用程序运行为设备所有者。 - Pinks

0

你的应用程序需要成为设备的所有者。要成为设备所有者,你需要进行NFC配置或adb命令shell。你可以在Florent的博客这里找到非常好的写作。

然而,有一种新的方法可以让你的应用程序从Android Marshmallow开始成为设备所有者。但是有很多限制。你必须是EMM提供商,并且你的客户必须拥有谷歌商业或教育许可证才能使用此功能。

谷歌应用商店上没有任何应用程序允许你的应用程序成为设备管理员。作为设备所有者,你可以控制设备上的许多事情,因此,我相信谷歌可能不想在没有适当保障的情况下提供这种控制。

关于三星设备,它们提供了他们的Knox SDK,如其他答案中所述,该SDK使你可以访问某些在原生Android中不允许的API。


那么普通第三方执行这些操作的唯一方式是通过root或三星的Knox吗?您能展示如何使用Knox来实现吗? - android developer
@androiddeveloper 访问 https://seap.samsung.com/ - 你应该在他们的网站上做更多的研究。文档非常清晰,说明了如何完成所有操作。 - kash
好的,我在这里创建了一个帖子:https://seap.samsung.com/forum-topic/question-how-get-started-knox-sdk-perform-operations-apps - android developer
1
我是一款应用程序的作者,该应用程序使用了KNOX功能,而不需要将其设置为设备所有者。对我们来说,它非常有效,并且可以通过Play商店轻松部署。 - dkwiebe
多么奇怪,似乎“设备所有者”的范围仅限于Google商业和教育机构。这让你想知道...真正的设备所有者购买了什么?语法错误=逻辑错误。 - Hypersoft Systems
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接