Abilita e disabilita le app di sistema tramite ADB


49

Esiste un comando adb per abilitare / disabilitare un'app di sistema?

Grazie

Risposte:


67

Sì. Il comando è pm disable <package name>. Devi essere root per fare questo:

Apri shell e ottieni root:

PC> adb shell
shell@hammerhead:/ $ su

Elenca tutte le app abilitate, filtra per "calcolatrice":

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

Disabilita app:

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

Elenca tutte le app disabilitate:

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

Alcune altre cose degne di nota:

  1. Nel mio test, le app disabilitate in questo modo scompaiono completamente dall'elenco Impostazioni> App. Non sembrano nemmeno essere visualizzati nella scheda "Disabilitato"
  2. Puoi riattivare le app con pm enable <package name>. In effetti, questo sembra essere l' unico modo per riattivarli, nella mia esperienza.

È possibile evitare di nascondere l'app selezionata quando la si disabilita?
sviluppatore Android

1
@androiddeveloper No. Nascondere completamente l'app , inclusa l'interfaccia utente, è l'idea alla base.
Izzy

@Izzy vedo. È possibile fare il contrario, cioè nascondersi, senza disabilitare?
sviluppatore Android

Teoricamente sì, credo; ma non ho idea di come farlo. Ci sono alcune "app" negli store che non compaiono da nessuna parte quando installate (in quanto, ad esempio, forniscono solo impostazioni aggiuntive in alcune altre app o offrono alcuni "servizi invisibili" come "account manager" per servizi specifici), il che dimostra che dovrebbe funzionare in qualche modo; ma temo che debba essere fatto nell'app Manifesto simili (non sono uno sviluppatore Android, quindi non posso dirlo).
Izzy

è possibile abilitare l'app dalla sua pagina di playstore.
Info-Screen

7

Oltre alla risposta di @eldarerathis, è possibile disabilitare un'app per un utente specifico. Ho usato questo metodo per rimuovere alcune app da un utente con restrizioni che non erano elencate nella schermata delle impostazioni dell'utente. Tutti i comandi da un adb shell. È necessario l'accesso alla radice per apportare modifiche.

Innanzitutto, ottieni l'ID dell'utente:

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

Poi

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

Per riattivare

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

In questo esempio, Alice può usare il file manager ma Bob no.

Puoi fare una cosa simile con hideinvece di disable. Non sono sicuro di quale sia il migliore, ma vedi questa risposta . Il contrario di hideè unhide(potrebbe essere necessario un riavvio per effettuare unhide).

Puoi elencare i pacchetti con pm list pacakges --user 11. Dai -ealla lista pacchetti abilitati o -dse vuoi vedere quelli disabilitati. Sembra che non ci sia alcun filtro per i pacchetti nascosti.

FWIW, ho provato quanto sopra su Lollipop con CM 12.1 su Amazon Fire (KFFOWI).


3

Questo dovrebbe funzionare indipendentemente dal fatto che l'app sia un'app di sistema o un'app di terze parti (installata dall'utente).


Vedi la mia risposta su Determinare il nome del pacchetto dell'app per ottenere il nome del pacchetto dell'app interessata e utilizzare la shell per eseguire questi comandi ( richiede l'accesso come root ):

shell adb
su
pm disable PACKAGE # disabilita l'app e la nasconde in Impostazioni -> Applicazioni 
pm nascondi PACCHETTO # alternativa; per Android Lollipop e versioni successive
pacchetto cmd sospendere PACCHETTO # alternativa; il pacchetto rimane visibile nell'app Avvio applicazioni e Impostazioni ma non può essere utilizzato; una funzionalità di Device Administration

PACKAGE si riferisce al nome del pacchetto dell'app

Per ripristinare l'app, sostituisci disabilita con abilita , nascondi con scopri , e sospendi con insospensione nel comando detto ed eseguilo con il privilegio di root.

Se hai Android KitKat o versioni successive e non hai accesso root , utilizza nel PC per eseguire questo comando:

blocco pm pm adb PACCHETTO # per Android KitKat
adb shell pm hide PACCHETTO # solo per Android Lollipop
adb shell pm disable-user PACCHETTO # alternativa a `pm hide`; per Android Lollipop e versioni successive; funziona esattamente come disabilitare un'app tramite l'app Impostazioni

Per ripristinare l'app:

adb shell pm sbloccare PACCHETTO # per Android KitKat
adb shell pm scopri PACCHETTO # per Android Lollipop e solo se hai usato `pm hide` in precedenza
adb shell pm abilita il PACCHETTO # per Android Lollipop e versioni successive

Le modifiche avverrebbero immediatamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.