Увімкнення та вимкнення системних програм через ADB


49

Чи є якась команда adb для включення / відключення системного додатка?

Дякую

Відповіді:


67

Так. Команда є pm disable <package name>. Ви повинні мати корінь для цього:

Відкрийте оболонку та отримайте корінь:

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>. Насправді, це, здається, є єдиним способом їх відновлення, на мій досвід.

Чи можна уникнути приховування вибраного додатка під час його відключення?
андроїд розробник

1
@androiddeveloper No. Приховування додатки повністю , в тому числі з призначеного для користувача інтерфейсу, це вся ідея позаду нього.
Іззі

@Izzy Я бачу. Чи можна зробити навпаки, тобто просто сховатися, не відключаючи?
андроїд розробник

Теоретично так, я здогадуюсь; але я поняття не маю, як це зробити. У магазинах є "додатки", які ніколи не встановлені ніколи (якщо вони, наприклад, надають лише додаткові налаштування в деяких інших додатках, або пропонують якісь "невидимі сервіси", такі як "менеджери облікових записів" для певних служб), що підтверджує, що це має працювати. якось; але я боюся, що це можна зробити в додатку Manifestчи тому подібному (я не розробник Android, тому не можу сказати).
Izzy

можна ввімкнути додаток на його сторінці відтворення.
Інформаційний екран

7

Надалі відповідь від @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є unhide(перезавантаження може знадобитися для ефекту unhide).

Ви можете перелічити пакунки за допомогою pm list pacakges --user 11. Надайте -eдо списку включені пакети або -dякщо ви хочете побачити інваліди Здається, не буде фільтру для прихованих пакетів.

FWIW, я спробував вищезгадане на Lollipop з CM 12.1 на Amazon Fire (KFFOWI).


3

Це має працювати незалежно від того, додаток є системним додатком або стороннім додатком (встановлений користувачем).


Дивіться мою відповідь у розділі Визначення назви пакета вашого додатка, щоб отримати назву пакета відповідного додатка та використати оболонку для виконання цих команд ( потрібен кореневий доступ ):

оболонка adb
су
pm ones PACKAGE # відключає додаток і приховує його в Налаштуваннях -> Програми 
вечір приховати ПАКЕТ # альтернативу; для Android Lollipop та вище
пакет cmd призупинив ПАКЕТ # альтернативу; пакет залишається видимим у програмі Launcher and Settings, але його не можна використовувати; особливість адміністрування пристроїв

PACKAGE відноситься до назви пакета програми

Щоб відновити додаток, замінити відключити з включити , приховати з Показати , і призупинити з знову включити в зазначеній команди і виконати його з коренем привілеїв.

Якщо ви маєте Android KitKat або вище та не маєте кореневого доступу , використовуйте в ПК для виконання цієї команди:

блок блоку вечора adb PACKAGE # для Android KitKat
adb shell pm сховай PACKAGE # лише для Android Lollipop
adb shell pm pm-user PACKAGE # альтернатива `pm hid '; для Android Lollipop та вище; це працює так само, як відключення програми через програму Налаштування

Щоб відновити додаток:

adb shell pm unblocking PACKAGE # for Android KitKat
adb shell pm unhide PACKAGE # для Android Lollipop, і лише якщо ви раніше використовували `pm hid '
вечора adb shell pm PACKAGE # для Android Lollipop та вище

Зміни відбудуться негайно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.