Есть ли какая-нибудь команда adb для включения/отключения системного приложения?
Спасибо
Да. Команда есть 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>
. На самом деле, по моему опыту, это единственный способ снова включить их.Это должно работать независимо от того, является ли приложение системным или сторонним приложением (установленным пользователем).
См. мой ответ в разделе Определите имя пакета вашего приложения, чтобы получить имя пакета соответствующего приложения, и используйте оболочку adb для выполнения этих команд ( требуется root-доступ ):
adb оболочка Су pm disable PACKAGE # отключает приложение и скрывает его в Настройках -> Приложения pm скрыть ПАКЕТ # альтернатива; для Android Lollipop и выше cmd package suspend ПАКЕТ # альтернатива; пакет остается видимым в программе запуска и настройках, но его нельзя использовать; функция администрирования устройств
PACKAGE
относится к имени пакета приложения
Чтобы восстановить приложение, замените disable на enable , скройте на unhide и приостановите на unsuspend в указанной команде и выполните ее с привилегиями root.
Если у вас Android KitKat или выше и у вас нет root-доступа , используйте adb на ПК для выполнения этой команды:
adb shell pm block ПАКЕТ # для Android KitKat adb shell pm hide PACKAGE # только для Android Lollipop adb shell pm disable-user ПАКЕТ # альтернатива `pm hide`; для Android Lollipop и выше; это работает так же, как отключение приложения через приложение «Настройки».
Чтобы восстановить приложение:
adb shell pm разблокировать ПАКЕТ # для Android KitKat adb shell pm unhide PACKAGE # для Android Lollipop и только если вы ранее использовали `pm hide` adb shell pm enable PACKAGE # для Android Lollipop и выше
Изменения произойдут немедленно.
cmd package suspend <package>
работало только так, как ожидалось. Все остальное будет вызывать исключенияpm disable-user
команда не сразу скрывает значок приложения, мне нужно перезапустить программу запуска, чтобы изменения вступили в силу.В дополнение к ответу @eldarerathis вы можете отключить приложение для определенного пользователя. Я использовал этот метод, чтобы удалить некоторые приложения от ограниченного пользователя, которые не были перечислены на экране настроек пользователя. Все команды из файла adb shell
. Для внесения изменений требуется root-доступ.
Сначала получите идентификатор пользователя:
$ 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
( unhide
для эффекта может потребоваться перезагрузка unhide
).
Вы можете перечислить пакеты с расширением pm list packages --user 11
. Дайте -e
список включенных пакетов или -d
если вы хотите увидеть отключенные. Казалось бы, нет фильтра для скрытых пакетов.
FWIW: я попробовал описанное выше на Lollipop с CM 12.1 на Amazon Fire (KFFOWI).
Я хотел отключить игровой магазин на телефоне Vivo, потому что моя племянница всегда устанавливает несколько гигабайт игр. Для некоторых из вас это может сработать, рут не требуется.
Чтобы отключить плеймаркет:
$ adb shell pm uninstall --user 0 -k com.android.vending
Success
Это удаляет приложение. Но есть и способ восстановить приложение:
$ adb shell pm install-existing com.android.vending
Package com.android.vending installed for user: 0
Конечно, плеймаркет тому пример. Это должно работать для большинства системных приложений. С ПК вы можете запустить это напрямую или, если вы находитесь в оболочке ADB, запустите команду после adb shell
.
Вы можете использовать adb shell pm list packages
, pipe, чтобы grep легко искал пакет.
Обратите внимание , что это удалит приложение, флаг -k должен сохранить данные. Но в моем случае все данные были очищены/удалены . Таким образом, в процессе удаления системных приложений может быть потеря данных .
Android-разработчик
Иззи
Android-разработчик
Иззи
Manifest
или подобном (я не Android-разработчик, поэтому я не могу сказать).Информационный экран