Aktivieren und Deaktivieren von System-Apps über ADB

49

Gibt es einen adb-Befehl zum Aktivieren / Deaktivieren einer System-App?

Vielen Dank

lao
quelle

Antworten:

67

Ja. Der Befehl lautet pm disable <package name>. Sie müssen root sein, um dies zu tun:

Öffne die Shell und erhalte root:

PC> adb shell
shell@hammerhead:/ $ su

Alle aktivierten Apps auflisten, nach "Rechner" filtern:

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

App deaktivieren:

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

Alle deaktivierten Apps auflisten:

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

Einige andere bemerkenswerte Dinge:

  1. In meinen Tests verschwinden auf diese Weise deaktivierte Apps vollständig aus der Liste Einstellungen> Apps. Sie scheinen nicht einmal auf der Registerkarte "Deaktiviert" angezeigt zu werden
  2. Sie können Apps mit erneut aktivieren pm enable <package name>. Tatsächlich scheint dies meiner Erfahrung nach die einzige Möglichkeit zu sein, sie wieder zu aktivieren.
eldarerathis
quelle
Kann man vermeiden, dass die ausgewählte App beim Deaktivieren ausgeblendet wird?
Android-Entwickler
1
@androiddeveloper Nein. Das vollständige Ausblenden der App , einschließlich der Benutzeroberfläche, ist die gesamte dahinter stehende Idee.
Izzy
@ Izzy Ich verstehe. Ist es möglich, das Gegenteil zu tun, dh nur zu verstecken, ohne zu deaktivieren?
Android-Entwickler
Theoretisch denke ich ja; aber ich habe keine Ahnung, wie das geht. Es gibt einige "Apps" in den Stores, die bei der Installation nirgendwo auftauchen (da sie z. B. nur zusätzliche Einstellungen in einigen anderen Apps enthalten oder einige "unsichtbare Services" wie "Account Manager" für bestimmte Services anbieten), was beweist, dass sie funktionieren sollten irgendwie; aber ich fürchte, das muss in der App Manifestoder ähnlichem gemacht werden (ich bin kein Android-Entwickler, also kann ich nicht sagen).
Izzy
Die App kann über die Playstore-Seite aktiviert werden.
Info-Bildschirm
7

Nach der Antwort von @eldarerathis können Sie eine App für einen bestimmten Benutzer deaktivieren. Ich habe diese Methode verwendet, um einige Apps von einem eingeschränkten Benutzer zu entfernen, die nicht auf dem Bildschirm mit den Benutzereinstellungen aufgeführt sind. Alle Befehle von einem adb shell. Root-Zugriff ist erforderlich, um Änderungen vorzunehmen.

Erstens erhalten Sie die Benutzer-ID:

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

Dann

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

Zum erneuten Aktivieren

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

In diesem Beispiel kann Alice den Dateimanager verwenden, Bob jedoch nicht.

Sie können eine ähnliche Sache mit hideanstelle von tun disable. Ich bin nicht sicher, welches das beste ist, aber sehe diese Antwort . Das Gegenteil von hideist unhide(möglicherweise ist ein Neustart erforderlich, um dies zu bewirken unhide).

Sie können Pakete mit auflisten pm list pacakges --user 11. Geben Sie -ean, -dob aktivierte Pakete aufgelistet werden sollen oder ob deaktivierte angezeigt werden sollen. Es scheint keinen Filter für versteckte Pakete zu geben.

FWIW, ich habe das oben auf Lollipop mit CM 12.1 auf einem Amazon Fire (KFFOWI) ausprobiert.

starfry
quelle
3

Dies sollte unabhängig davon funktionieren, ob es sich bei der App um eine System-App oder eine Drittanbieter-App (vom Benutzer installiert) handelt.


Siehe meine Antwort unter Ermitteln Sie den Paketnamen Ihrer App , um den Paketnamen der betreffenden App zu erhalten, und verwenden Sie die Shell , um diese Befehle auszuführen ( erfordert Root-Zugriff ):

ADB Shell
su
pm disable PACKAGE # deaktiviert die App und blendet sie unter Einstellungen -> Anwendungen aus 
pm hide PAKET # alternative; für Android Lollipop und höher
cmd package suspend PAKET # alternative; Paket bleibt in Launcher und Einstellungen sichtbar, kann aber nicht verwendet werden. eine Funktion der Geräteverwaltung

PACKAGE bezieht sich auf den Paketnamen der App

Wiederherzustellen die App, ersetzt disable mit ermöglichen , verstecken mit sichtbar machen , und Suspend mit Unsuspend in dem Kommando gesagt und führen Sie es mit Root - Rechten.

Wenn Sie Android KitKat oder höher verwenden und keinen Root-Zugriff haben , verwenden Sie auf dem PC, um diesen Befehl auszuführen:

adb shell pm block PACKAGE # für Android KitKat
adb shell pm hide PAKET # nur für Android Lollipop
adb shell pm disable-user PAKET # Alternative zu `pm hide`; für Android Lollipop und höher; Dies funktioniert genauso wie das Deaktivieren einer App über die App "Einstellungen"

So stellen Sie die App wieder her:

adb shell pm entblocken PACKAGE # für Android KitKat
adb shell pm blende PAKET # für Android Lollipop ein und nur wenn du vorher `pm hide` benutzt hast
adb shell pm aktiviert PAKET # für Android Lollipop und höher

Änderungen würden sofort stattfinden.

Feuerlord
quelle