Comando adb shell para exibir a caixa de diálogo de desinstalação do pacote Android

126

Estou em adbexecução e o dispositivo está conectado ao meu sistema no modo de depuração,

Quero desinstalar o aplicativo usando o lançamento intencional usando adb shell am start <INTENT>

Não quero desinstalar usando adb uninstall com.company.apppackagenem quero fazê-lo, mesmo usandoadb shell pm uninstall com.company.apppackage

Como posso enviar uma intenção com android.intent.action.DELETEação para um pacote específico, permitindo que o usuário veja o prompt e desinstale o programa?

Rinkal Bhanderi
fonte

Respostas:

178

Você pode fazer isso no adb usando este comando:

adb shell am start -a android.intent.action.DELETE -d package:<your app package>
pcans
fonte
2
você pode dizer qual pacote -d: <your app package> representa? existe alguma documentação?
Rinkal Bhanderi 18/10/12
11
-d significa dados. -a significa ação. Você está iniciando um Intent com ação como "Excluir" e dados como "pacote: seu pacote de aplicativos". Isso iniciará a atividade encarregada de desinstalar os pacotes e tentará desinstalar o pacote fornecido nos dados. A documentação pode ser encontrada usando o comando "adb shell am".
pcans
Não, se seu aplicativo contiver um DevicePolicyManager ativado, você deverá desativá-lo manualmente primeiro.
pcans
O comando acima mostra o diálogo de confirmação Excluir este aplicativo no telefone. Use em adb shell pm uninstall -k com.packagenamevez disso.
precisa saber é
1
Isso não funcionaria para aplicativos do sistema. A caixa de diálogo de prompt seria exibida, mas o aplicativo não seria desinstalado.
IgorGanapolsky
218

Use este comando no cmd:

desinstalação adb shell pm -k com.packagename

Por exemplo:

adb shell pm uninstall -k com.fedmich.pagexray

O -ksinalizador informa ao gerenciador de pacotes para manter os diretórios de cache e dados por perto, mesmo que o aplicativo seja removido. Se você deseja uma desinstalação limpa, não especifique -k.

neverever415
fonte
8
Eu gosto mais desta resposta. Porque, com este, você não receberá a caixa de diálogo de exclusão de exclusão.
joctee
2
@joctee, eu também, mas a pergunta dizia especificamente que eles não queriam desinstalar usando uma intenção.
OrhanC1
@Lohoris, já fez funcionar .. certifique-se de remover o "+" na resposta de
nunca
32
@Johnny_D O sinalizador -k diz ao gerenciador de pacotes para manter os diretórios de cache e dados por perto, mesmo que o aplicativo seja removido. Se você deseja uma desinstalação limpa, não especifique -k.
21714 Yojimbo
2
Continuo recebendo mensagens de falha ao tentar usar este comando.
IgorGanapolsky 01/08/16
12

Usando o ADB, você pode usar qualquer um dos três comandos a seguir:

adb shell am start -a android.intent.action.UNINSTALL_PACKAGE -d "package:PACKAGE"
adb shell am start -n com.android.packageinstaller/.UninstallerActivity -d "package:PACKAGE"
adb shell am start -a android.intent.action.DELETE -d "package:PACKAGE"

Substitua PACKAGE pelo nome do pacote do aplicativo de usuário instalado. O aplicativo não deve ser um administrador de dispositivo para que o comando funcione com êxito. Todos esses comandos exigiriam a confirmação do usuário para a remoção do aplicativo.

Detalhes do referido comando podem ser conhecidos verificando o uso de am usando adb shell am.

Eu obtive as informações sobre esses comandos usando o Elixir 2 (use qualquer aplicativo equivalente). Usei-o para mostrar as atividades do aplicativo Package Installer (a GUI que você vê durante a instalação e remoção de aplicativos), bem como as intenções relacionadas. Ai está.

A maneira alternativa que usei foi: tentei desinstalar o aplicativo usando a GUI até que eu recebesse a confirmação final. Não confirmei, mas executei o comando

adb shell dumpsys activity recents   # for Android 4.4 and above
adb shell dumpsys activity activities # for Android 4.2.1

Entre outras coisas, ele me mostrou detalhes úteis da intenção passada em segundo plano. Exemplo:

intent={act=android.intent.action.DELETE dat=package:com.bartat.android.elixir#com.bartat.android.elixir.MainActivity flg=0x10800000 cmp=com.android.packageinstaller/.UninstallerActivity}

Aqui, você pode ver a ação, dados, sinalizador e componente - o suficiente para a meta.

Senhor do fogo
fonte
Entendo que a pergunta é antiga, portanto minha resposta pode não ser muito relevante. Mas é totalmente relevante para as versões do Android usadas pela maioria dos usuários atualmente.
Firelord
6

Enquanto as respostas acima funcionam, mas no caso de você ter vários dispositivos conectados ao seu computador, o seguinte comando pode ser usado para remover o aplicativo de um deles:

adb -s <device-serial> shell pm uninstall <app-package-name>

Se você deseja descobrir o número de série do dispositivo, use o seguinte comando:

adb devices -l

Isso fornecerá uma lista de dispositivos conectados. A coluna da esquerda mostra os números de série do dispositivo.

sttaq
fonte
3

No meu caso, faço um adb shell pm list packagespara ver primeiro quais são os pacotes / aplicativos instalados no meu dispositivo ou emulador Android e, em seguida, ao localizar o pacote / aplicativo desejado, faço um adb shell pm uninstall -k com.package.name.

warfreak92
fonte
3

Presumo que você habilite developer modeno seu dispositivo Android e esteja conectado ao seu dispositivo e tenha acesso ao shell ( adb shell).

Feito isso, você pode desinstalar o aplicativo com este comando pm uninstall --user 0 <package.name>. 0 é o ID da raiz - dessa forma, você não precisa fazer muito root no seu dispositivo.

Aqui está um exemplo de como eu fiz no meu Huawei P110 lite

# gain shell access
$ adb shell

# check who you are
$ whoami
shell

# obtain user id
$ id
uid=2000(shell) gid=2000(shell)

# list packages
$ pm list packages | grep google                                                                                                                                                         
package:com.google.android.youtube
package:com.google.android.ext.services
package:com.google.android.googlequicksearchbox
package:com.google.android.onetimeinitializer
package:com.google.android.ext.shared
package:com.google.android.apps.docs.editors.sheets
package:com.google.android.configupdater
package:com.google.android.marvin.talkback
package:com.google.android.apps.tachyon
package:com.google.android.instantapps.supervisor
package:com.google.android.setupwizard
package:com.google.android.music
package:com.google.android.apps.docs
package:com.google.android.apps.maps
package:com.google.android.webview
package:com.google.android.syncadapters.contacts
package:com.google.android.packageinstaller
package:com.google.android.gm
package:com.google.android.gms
package:com.google.android.gsf
package:com.google.android.tts
package:com.google.android.partnersetup
package:com.google.android.videos
package:com.google.android.feedback
package:com.google.android.printservice.recommendation
package:com.google.android.apps.photos
package:com.google.android.syncadapters.calendar
package:com.google.android.gsf.login
package:com.google.android.backuptransport
package:com.google.android.inputmethod.latin

# uninstall gmail app
pm uninstall --user 0 com.google.android.gms
Lukasz Dynowski
fonte
--user 0executar a exclusão como root é muito útil
bw_üezi 21/01