Ativar e desativar aplicativos do sistema via ADB

49

Existe algum comando adb para ativar / desativar um aplicativo do sistema?

obrigado

lao
fonte

Respostas:

67

Sim. O comando é pm disable <package name>. Você deve ser root para fazer isso:

Abra o shell e obtenha o root:

PC> adb shell
shell@hammerhead:/ $ su

Liste todos os aplicativos ativados, filtre por "calculadora":

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

Desativar aplicativo:

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

Listar todos os aplicativos desativados:

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

Algumas outras coisas dignas de nota:

  1. Nos meus testes, os aplicativos desativados dessa maneira desaparecem completamente da lista Configurações> Aplicativos. Eles nem parecem ser exibidos na guia "Desativado"
  2. Você pode reativar aplicativos com pm enable <package name>. De fato, esta parece ser a única maneira de reativá-los, na minha experiência.
eldarerathis
fonte
É possível evitar ocultar o aplicativo escolhido ao desativá-lo?
desenvolvedor android
11
@androiddeveloper Não. Ocultar completamente o aplicativo , incluindo a interface do usuário, é a idéia por trás dele.
Izzy
@ Izzy eu vejo. É possível fazer o oposto, significando apenas se esconder, sem desativar?
desenvolvedor android
Teoricamente sim, eu acho; mas não tenho ideia de como fazer isso. Existem alguns "aplicativos" nas lojas que não aparecem em lugar algum quando instalados (como, por exemplo, fornecem apenas configurações adicionais em outros aplicativos ou oferecem alguns "serviços invisíveis", como "gerentes de contas" para serviços específicos), o que prova que ele deve funcionar de alguma forma; mas receio que isso seja feito no aplicativo Manifestou algo parecido (não sou desenvolvedor de Android, não sei dizer).
Izzy
é possível ativar o aplicativo na página playstore.
Info-Screen
7

Além da resposta de @eldarerathis, você pode desativar um aplicativo para um usuário específico. Usei esse método para remover alguns aplicativos de um usuário restrito que não estavam listados na tela de configurações do usuário. Todos os comandos de um adb shell. É necessário acesso raiz para fazer alterações.

Primeiro, obtenha o ID do usuário:

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

Então

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

Para reativar

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

Neste exemplo, Alice pode usar o gerenciador de arquivos, mas Bob não.

Você pode fazer algo semelhante ao hideinvés de disable. Não sei ao certo qual é o melhor, mas veja esta resposta . O inverso de hideé unhide(pode ser necessário reiniciar unhide).

Você pode listar pacotes com pm list pacakges --user 11. Dê -epara listar pacotes ativados ou -dse você deseja ver os desativados. Parece não haver filtro para pacotes ocultos.

FWIW, tentei o acima no Lollipop com CM 12.1 em um Amazon Fire (KFFOWI).

starfry
fonte
3

Isso deve funcionar independentemente de o aplicativo ser um sistema ou um aplicativo de terceiros (usuário instalado).


Veja minha resposta em Determine o nome do pacote do seu aplicativo para obter o nome do pacote do aplicativo em questão e use o shell para executar estes comandos ( requer acesso root ):

shell adb
su
pm desativar PACKAGE # desativa o aplicativo e o oculta em Configurações -> Aplicativos 
pm hide PACOTE # alternativa; para Android Lollipop e superior
pacote cmd suspende PACKAGE # Alternative; o pacote permanece visível no aplicativo Iniciador e configurações, mas não pode ser usado; um recurso da Administração de Dispositivos

PACKAGE refere-se ao nome do pacote do aplicativo

Para restabelecer o aplicativo, substitua disable com permitir , esconder com unhide , e suspender com UNSUSPEND no comando dito e executá-lo com privilégios de root.

Se você possui o Android KitKat ou superior e não possui acesso root , use no PC para executar este comando:

bloco adb pm pm PACKAGE # para Android KitKat
adb shell pm hide PACKAGE # para Android Lollipop apenas
shell adb pm desativar o usuário PACKAGE # alternativa ao `pm hide`; para Android Lollipop e superior; isso funciona como desativar um aplicativo por meio do aplicativo Configurações

Para restabelecer o aplicativo:

adb shell pm desbloqueie PACKAGE # para Android KitKat
adb shell pm unhide PACKAGE # para Android Lollipop e somente se você tiver usado `pm hide` anteriormente
adb shell pm enable PACKAGE # para Android Lollipop e superior

As mudanças ocorreriam imediatamente.

Senhor do Fogo
fonte