通过ADB启用和禁用系统应用


49

是否有任何adb命令启用/禁用系统应用程序?

谢谢

Answers:


67

是。命令是pm disable <package name>。您必须是root用户才能执行此操作:

打开外壳并获得root:

PC> adb shell
shell@hammerhead:/ $ su

列出所有已启用的应用程序,并按“计算器”进行过滤:

root@hammerhead:/ # pm list packages -e | grep 'calculator'
package:com.android.calculator2

禁用应用程序:

root@hammerhead:/ # pm disable com.android.calculator2
Package com.android.calculator2 new state: disabled

列出所有禁用的应用程序:

root@hammerhead:/ # pm list packages -d
package:com.android.calculator2
package:com.google.android.apps.inputmethod.hindi
package:jp.co.omronsoft.iwnnime.ml
package:com.google.android.inputmethod.pinyin
package:com.google.android.inputmethod.korean
package:com.google.earth
root@hammerhead:/ #

其他一些值得注意的事情:

  1. 在我的测试中,以这种方式禁用的应用程序会从“设置”>“应用程序”列表中完全消失。它们甚至似乎都没有显示在“禁用”选项卡中
  2. 您可以使用来重新启用应用pm enable <package name>。实际上,根据我的经验,这似乎是重新启用它们的唯一方法。

禁用时可以避免隐藏所选应用程序吗?
android开发人员

1
@androiddeveloper号。完全隐藏应用程序(包括从UI 隐藏)是其背后的全部想法。
伊兹

@Izzy,我明白了。是否有可能做相反的事情,即只是隐藏而不禁用?
Android开发人员

从理论上讲,我猜是的。但我不知道该怎么做。商店中有一些“应用程序”在安装后不会出现在任何地方(因为它们例如仅在某些其他应用程序中提供了其他设置,或者提供了一些“不可见的服务”,例如“客户经理”用于特定服务),这证明它应该可以工作不知何故; 但我恐怕要在应用程序之Manifest类的程序中完成(我不是Android开发人员,所以我无法告知)。
伊兹

可以通过其Playstore页面启用该应用。
信息屏

7

除了@eldarerathis的答案,您可以为特定用户禁用应用程序。我使用此方法从受限制的用户中删除了一些未在用户设置屏幕上列出的应用。来自的所有命令adb shell。需要进行根访问才能进行更改。

首先,获取用户的ID:

$ pm list users
Users:
  UserInfo{0:Alice:13} running
  UserInfo{11:Bob:18} running

然后

$ pm disable --user 11 com.cyanogenmod.filemanager
Package com.cyanogenmod.filemanager new state: disabled-user

重新启用

# pm enable --user 11 com.cyanogenmod.filemanager

在此示例中,爱丽丝可以使用文件管理器,而鲍勃不能。

您可以使用hide代替做类似的事情disable。我不确定哪个是最好的,但是请参阅此答案。相反的hideunhide(可能需要重新启动才能生效unhide)。

您可以使用列出软件包pm list pacakges --user 11。给-e列表启用的软件包,或者-d如果您想查看禁用的软件包。似乎没有用于隐藏包的过滤器。

FWIW,我在Amazon Fire(KFFOWI)上使用CM 12.1在Lollipop上尝试了上述方法。


3

无论该应用程序是系统应用程序还是第三方应用程序(已安装用户),它都应该起作用。


请参阅“ 确定应用程序的程序包名称”以获取相关应用程序的程序包名称,并使用 shell执行以下命令(需要root访问权限):

亚行外壳
su
pm disable PACKAGE#禁用应用程序并将其隐藏在“设置”->“应用程序”中 
pm hide PACKAGE#替代;适用于Android Lollipop及更高版本
cmd软件包暂停PACKAGE#替代;程序包在Launcher and Settings应用程序中仍然可见,但无法使用;设备管理的功能

PACKAGE 指应用程序的软件包名称

要恢复应用程序,取代禁用启用隐藏取消隐藏,并中止取消暂停在上述命令,并以root权限执行。

如果您具有Android KitKat或更高版本并且没有root访问权限,请在PC中使用执行以下命令:

适用于Android KitKat的adb shell pm块PACKAGE#
adb shell pm hide PACKAGE#仅适用于Android Lollipop
adb shell pm disable-user PACKAGE#替代`pm hide`; 适用于Android Lollipop及更高版本;就像通过“设置”应用禁用应用一样

要恢复该应用程序:

adb shell pm解锁用于Android KitKat的PACKAGE#
仅适用于Android Lollipop的adb shell pm unhide PACKAGE#,并且前提是您之前使用过“ pm hide”
adb shell pm为Android Lollipop及更高版本启用PACKAGE#

更改将立即发生。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.