Włącz i wyłącz aplikacje systemowe za pośrednictwem ADB

49

Czy jest jakieś polecenie adb, aby włączyć / wyłączyć aplikację systemową?

Dzięki

lao
źródło

Odpowiedzi:

67

Tak. Poleceniem jest pm disable <package name>. Aby to zrobić, musisz być rootem:

Otwórz powłokę i zrootuj:

PC> adb shell
shell@hammerhead:/ $ su

Wyświetl listę wszystkich włączonych aplikacji, filtruj według „kalkulatora”:

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

Wyłącz aplikację:

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

Wyświetl wszystkie wyłączone aplikacje:

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:/ #

Kilka innych rzeczy, na które warto zwrócić uwagę:

  1. W moich testach aplikacje wyłączone w ten sposób całkowicie znikają z listy Ustawienia> Aplikacje. Nie wydają się nawet wyświetlane w zakładce „Wyłączone”
  2. Możesz ponownie włączyć aplikacje za pomocą pm enable <package name>. Z mojego doświadczenia wynika, że ​​jest to jedyny sposób na ich ponowne włączenie.
eldarerathis
źródło
Czy można uniknąć ukrycia wybranej aplikacji podczas jej wyłączania?
programista Androida
1
@androiddeveloper nr Ukrywanie aplikacji całkowicie , łącznie z UI, to cała idea za nim.
Izzy
@ Izyzy widzę. Czy można zrobić coś przeciwnego, czyli po prostu ukryć się bez wyłączania?
programista Androida
Teoretycznie tak, tak sądzę; ale nie mam pojęcia jak to zrobić. W sklepach jest kilka „aplikacji”, które nie pojawiają się nigdzie po instalacji (ponieważ np. Zapewniają tylko dodatkowe ustawienia w niektórych innych aplikacjach lub oferują „niewidoczne usługi”, takie jak „menedżerowie kont” dla określonych usług), co dowodzi, że powinno działać jakoś; ale obawiam się, że należy to zrobić w aplikacji Manifestlub podobnej aplikacji (nie jestem deweloperem Androida, więc nie mogę powiedzieć).
Izzy
możliwe jest włączenie aplikacji na stronie sklepu internetowego.
Ekran informacyjny
7

Oprócz odpowiedzi @eldarerathis możesz wyłączyć aplikację dla określonego użytkownika. Użyłem tej metody, aby usunąć niektóre aplikacje z ograniczonego użytkownika, które nie były wymienione na ekranie ustawień użytkownika. Wszystkie polecenia z adb shell. Dostęp root jest wymagany do wprowadzenia zmian.

Po pierwsze, uzyskaj identyfikator użytkownika:

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

Następnie

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

Aby ponownie włączyć

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

W tym przykładzie Alice może użyć menedżera plików, ale Bob nie.

Możesz zrobić coś podobnego hidezamiast disable. Nie jestem pewien, który jest najlepszy, ale zobacz tę odpowiedź . Przeciwnie hidejest unhide(może być konieczne ponowne uruchomienie komputera unhide).

Możesz wyświetlić listę pakietów za pomocą pm list pacakges --user 11. Podaj -elistę włączonych pakietów lub -djeśli chcesz zobaczyć wyłączone. Wygląda na to, że nie ma filtru dla ukrytych pakietów.

FWIW, próbowałem wyżej na Lollipop z CM 12.1 na Amazon Fire (KFFOWI).

rozgwiazdy
źródło
3

Powinno to działać niezależnie od tego, czy aplikacja jest aplikacją systemową, czy aplikacją innej firmy (zainstalowaną przez użytkownika).


Zobacz moją odpowiedź na stronie Określ nazwę pakietu swojej aplikacji, aby uzyskać nazwę pakietu danej aplikacji i użyj powłoki do wykonania tych poleceń ( wymaga dostępu do konta root ):

powłoka adb
su
pm wyłącz PAKIET # wyłącza aplikację i ukrywa ją w Ustawieniach -> Aplikacje 
pm ukryj PAKIET # alternatywa; dla Androida Lollipop i nowszych wersji
pakiet cmd zawiesza PAKIET # alternatywa; pakiet pozostaje widoczny w aplikacji Launcher i Ustawienia, ale nie można go używać; funkcja administracji urządzenia

PACKAGE odnosi się do nazwy pakietu aplikacji

Aby przywrócić aplikację, należy wymienić wyłączyć ze włączyć , ukryć ze PokaŜ i zawiesić z odwiesi w tej komendzie i uruchom go z uprawnieniami administratora.

Jeśli masz system Android KitKat lub nowszy i nie masz dostępu do konta root , użyj na PC, aby wykonać to polecenie:

adb shell pm block PAKIET # dla Androida KitKat
adb shell pm ukryj PAKIET # tylko dla Androida Lollipop
adb shell pm disable-user PAKIET # alternatywa dla `pm hide`; dla Androida Lollipop i nowszych; działa to tak jak wyłączenie aplikacji za pomocą aplikacji Ustawienia

Aby przywrócić aplikację:

adb shell pm odblokuj PAKIET # dla Androida KitKat
adb shell pm odkryj pakiet # dla Androida Lollipop i tylko jeśli wcześniej użyłeś `pm hide`
adb shell pm włącz PAKIET # dla Androida Lollipop i nowszych wersji

Zmiany miałyby miejsce natychmiast.

Firelord
źródło