Aktivieren und deaktivieren Sie System-Apps über ADB

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

Danke

Antworten (4)

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

Shell öffnen und root werden:

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 erwähnenswerte 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.
Ist es möglich, das Ausblenden der ausgewählten App beim Deaktivieren zu vermeiden?
@androiddeveloper Nein. Das vollständige Ausblenden der App , einschließlich der Benutzeroberfläche, ist die ganze Idee dahinter.
@Izzy Ich verstehe. Ist es möglich, das Gegenteil zu tun, dh nur zu verstecken, ohne zu deaktivieren?
Theoretisch ja, denke ich; aber ich hab keine ahnung wie man das macht. Es gibt einige "Apps" in den Stores, die nach der Installation nirgendwo erscheinen (da sie zB nur zusätzliche Einstellungen in einigen anderen Apps bereitstellen oder einige "unsichtbare Dienste" wie "Account Manager" für bestimmte Dienste anbieten), was beweist, dass es funktionieren sollte irgendwie; aber ich fürchte, das muss in der App Manifestoder ähnlichem gemacht werden (ich bin kein Android-Entwickler, also kann ich es nicht sagen).
Es ist möglich, die App über die Playstore-Seite zu aktivieren.

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 Bestimmen 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
so
pm disable PAKET # deaktiviert die App und versteckt sie unter Einstellungen -> Anwendungen
pm verstecke PAKET # alternativ; für Android Lollipop und höher
cmd Paket suspend PAKET # alternativ; Paket bleibt im Launcher und in der App „Einstellungen“ sichtbar, kann aber nicht verwendet werden; eine Funktion der Geräteverwaltung

PACKAGEbezieht sich auf den Paketnamen der App

Um die App wieder zu aktivieren, ersetzen Sie disable durch enable , hide durch unhide und suspend durch unsuspend im besagten Befehl und führen Sie ihn mit Root-Rechten aus.

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

adb shell pm block PAKET # 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 Einstellungs-App

So stellen Sie die App wieder her:

adb shell pm unblock PAKET # für Android KitKat
adb shell pm unhide PACKAGE # für Android Lollipop und nur, wenn Sie zuvor `pm hide` verwendet haben
adb shell pm enable PACKAGE # für Android Lollipop und höher

Änderungen würden sofort erfolgen.

von allem anderen auf dieser Seite cmd package suspend <package>funktionierte nur wie erwartet. Alles andere würde Ausnahmen auslösen
@iSWORD Welches Android-Gerät und welche Android-Version verwendest du?
Ich verwende ein Lenovo P2a42 mit AOSP 11
Es kann ein Launcher-Problem sein, aber für mich blendet der pm disable-userBefehl das Symbol einer App nicht sofort aus, ich muss den Launcher neu starten, damit die Änderungen wirksam werden.

Neben 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 waren. Alle Befehle von einer adb shell. Root-Zugriff ist erforderlich, um die Änderungen vorzunehmen.

Rufen Sie zuerst die Benutzer-ID ab:

$ 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 machen disable. Ich bin mir nicht sicher, welches das Beste ist, aber siehe diese Antwort . Das Gegenteil von hideist unhide(möglicherweise ist ein Neustart erforderlich, um unhide).

Sie können Pakete mit auflisten pm list packages --user 11. Geben Sie -eaktivierte Pakete auf oder -dwenn Sie deaktivierte sehen möchten. Es scheint keinen Filter für versteckte Pakete zu geben.

FWIW: Ich habe das obige auf Lollipop mit CM 12.1 auf einem Amazon Fire (KFFOWI) ausprobiert.

Ich wollte den Playstore auf dem Vivo-Telefon deaktivieren, weil meine Nichte immer mehrere Gigabyte an Spielen installiert. Für einige von Ihnen könnte dies funktionieren, es ist kein Root erforderlich.

Playstore deaktivieren:

$ adb shell pm uninstall --user 0 -k com.android.vending
Success

Dadurch wird die App deinstalliert. Es gibt aber auch eine Möglichkeit, die App wiederherzustellen:

$ adb shell pm install-existing com.android.vending
Package com.android.vending installed for user: 0

Playstore ist natürlich ein Beispiel. Dies sollte für die meisten System-Apps funktionieren. Vom PC aus können Sie dies direkt ausführen oder, wenn Sie sich in einer ADB-Shell befinden, den Befehl nach ausführen adb shell.

Sie können adb shell pm list packages, pipe that to grep verwenden, um einfach nach dem Paket zu suchen.

Beachten Sie , dass dadurch die App deinstalliert wird, das Flag -k sollte die Daten behalten. Aber in meinem Fall wurden alle Daten bereinigt/gelöscht . Daher kann es während der Deinstallation von System-Apps zu Datenverlust kommen.