Ответы:
Да. Команда есть 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:/ #
Некоторые другие вещи стоит отметить:
pm enable <package name>
. На самом деле, по моему опыту , это единственный способ восстановить их.Manifest
или тому подобное (я не Android-разработчик, поэтому я не могу сказать).
В дополнение к ответу @eldarerathis, вы можете отключить приложение для конкретного пользователя. Я использовал этот метод для удаления некоторых приложений от пользователя с ограниченными правами, которые не были перечислены на экране настроек пользователя. Все команды от adb shell
. Корневой доступ необходим для внесения изменений.
Во-первых, получите идентификатор пользователя:
$ 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
. Я не уверен, что лучше, но посмотри на этот ответ . Обратный hide
IS unhide
(перезагрузка может потребоваться для эффекта unhide
).
Вы можете перечислить пакеты с pm list pacakges --user 11
. Дайте -e
список включенных пакетов или -d
если вы хотите увидеть отключенные. Казалось бы, нет фильтра для скрытых пакетов.
Я попробовал вышеописанное на Lollipop с CM 12.1 на Amazon Fire (KFFOWI).
Это должно работать независимо от того, является ли приложение системным или сторонним приложением (установленным пользователем).
См. Мой ответ в разделе Определение имени пакета вашего приложения, чтобы получить имя пакета соответствующего приложения, и используйте оболочку adb для выполнения этих команд ( требуется root-доступ ):
adb shell су pm Отключить PACKAGE # отключает приложение и скрывает его в Настройки -> Приложения pm скрыть PACKAGE # альтернатива; для Android Lollipop и выше cmd пакет приостановить PACKAGE # альтернатива; пакет остается видимым в Launcher и настройках приложения, но не может быть использован; особенность Администрирования устройства
PACKAGE
ссылается на название пакета приложения
Чтобы восстановить приложение, замените отключение на enable , скрытие на unhide и приостановите с unsuspend в указанной команде и выполните его с привилегией root.
Если у вас Android KitKat или выше и у вас нет root-прав , используйте adb на ПК для выполнения этой команды:
adb shell pm block PACKAGE # для Android KitKat adb shell pm скрыть PACKAGE # только для Android Lollipop adb shell pm disable-user PACKAGE # альтернатива `pm hide`; для Android Lollipop и выше; это работает так же, как отключение приложения через приложение настроек
Чтобы восстановить приложение:
adb shell pm разблокировать PACKAGE # для Android KitKat adb shell pm unhide PACKAGE # для Android Lollipop и только если вы ранее использовали `pm hide` adb shell pm включить PACKAGE # для Android Lollipop и выше
Изменения произошли бы немедленно.