Gibt es einen adb-Befehl zum Aktivieren / Deaktivieren einer System-App?
Danke
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:
pm enable <package name>
. Tatsächlich scheint dies meiner Erfahrung nach die einzige Möglichkeit zu sein, sie wieder 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 adb -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
PACKAGE
bezieht 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 adb 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.
cmd package suspend <package>
funktionierte nur wie erwartet. Alles andere würde Ausnahmen auslösenpm disable-user
Befehl 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 hide
anstelle von machen disable
. Ich bin mir nicht sicher, welches das Beste ist, aber siehe diese Antwort . Das Gegenteil von hide
ist unhide
(möglicherweise ist ein Neustart erforderlich, um unhide
).
Sie können Pakete mit auflisten pm list packages --user 11
. Geben Sie -e
aktivierte Pakete auf oder -d
wenn 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.
Android-Entwickler
Izzy
Android-Entwickler
Izzy
Manifest
oder ähnlichem gemacht werden (ich bin kein Android-Entwickler, also kann ich es nicht sagen).Info-Bildschirm