команда оболочки adb для отображения диалогового окна удаления пакета Android

126

У меня adbработает, и устройство подключено к моей системе в режиме отладки,

Я хочу удалить приложение, используя запуск намерения, используя adb shell am start <INTENT>

Я не хочу удалять с помощью adb uninstall com.company.apppackageи не хочу этого делать даже с помощьюadb shell pm uninstall com.company.apppackage

Как я могу отправить намерение с android.intent.action.DELETEдействием для определенного пакета, позволяя пользователю увидеть подсказку и удалить программу?

Ринкал Бхандери
источник

Ответы:

178

Вы можете сделать это из adb с помощью этой команды:

adb shell am start -a android.intent.action.DELETE -d package:<your app package>
pcans
источник
2
Подскажите, пожалуйста, что означает -d package: <your app package>? какая-то документация есть?
Ринкал Бхандери
11
-d означает данные. -а означает действие. Вы запускаете намерение с действием «Удалить» и данными как «пакет: пакет вашего приложения». Это запустит действие по удалению пакетов и попытается удалить пакет, указанный в данных. Документацию можно найти с помощью команды «adb shell am».
pcans
Нет, если ваше приложение содержит активированный DevicePolicyManager, вам придется сначала вручную отключить его.
pcans,
Вышеупомянутая команда показывает диалоговое окно подтверждения удаления этого приложения на телефоне. adb shell pm uninstall -k com.packagenameВместо этого используйте .
ViliusK
1
Это не сработает для системных приложений. Появится диалоговое окно с запросом, но приложение не будет удалено.
Игорь Ганапольский 01
218

Используйте эту команду в cmd:

adb shell pm uninstall -k com.packagename

Например:

adb shell pm uninstall -k com.fedmich.pagexray

-kФлаг говорит менеджер пакетов , чтобы сохранить кэш и данные каталогов вокруг, даже если приложение удаляется. Если вы хотите полное удаление, не указывайте -k.

neverever415
источник
8
Мне этот ответ больше нравится. Потому что с этим вы не получите диалоговое окно подтверждения восстановления.
joctee
2
@joctee, я тоже, но в вопросе конкретно говорилось, что они не хотят удалять с помощью намерения.
OrhanC1
@Lohoris, заставили это работать .. убедитесь, что вы удалили "+" на ответе neverever
fedmich
32
@Johnny_D Флаг -k указывает диспетчеру пакетов сохранять кеш и каталоги данных, даже если приложение удалено. Если вы хотите полное удаление, не указывайте -k.
Йоджимбо
2
Я постоянно получаю Failure сообщения при попытке использовать эту команду.
Игорь Ганапольский 01
12

Используя ADB, вы можете использовать любую из следующих трех команд:

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"

Замените ПАКЕТ именем пакета установленного пользовательского приложения. Для успешной работы команды приложение не должно быть администратором устройства. Все эти команды требуют подтверждения пользователя для удаления приложения.

Детали указанной команда может быть известна проверками утра использования «s использование adb shell am.

Я получил информацию об этих командах с помощью Elixir 2 (используйте любое эквивалентное приложение). Я использовал его, чтобы показать действия приложения Package Installer (графический интерфейс, который вы видите во время установки и удаления приложений), а также связанные с ним намерения. Вот так.

Я использовал альтернативный способ: я попытался удалить приложение с помощью графического интерфейса, пока мне не было показано окончательное подтверждение. Я не подтвердил, но выполнил команду

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

Среди прочего, он показал мне полезные детали намерения, переданного в фоновом режиме. Пример:

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

Здесь вы можете увидеть действие, данные, флаг и компонент - достаточно для цели.

Firelord
источник
Я понимаю, что вопрос старый, поэтому мой ответ может быть не очень актуальным. Но это полностью актуально для версий Android, используемых сегодня большинством пользователей.
Firelord
6

Хотя приведенные выше ответы работают, но если к вашему компьютеру подключено несколько устройств, для удаления приложения с одного из них можно использовать следующую команду:

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

Если вы хотите узнать серийный номер устройства, используйте следующую команду:

adb devices -l

Это даст вам список подключенных устройств. В левом столбце показаны серийные номера устройств.

sttaq
источник
3

В моем случае я adb shell pm list packagesсначала проверяю, какие пакеты / приложения установлены на моем устройстве или эмуляторе Android, а затем, обнаружив нужный пакет / приложение, я делаю файл adb shell pm uninstall -k com.package.name.

warfreak92
источник
3

Я предполагаю, что вы включаете developer modeна своем устройстве Android, и вы подключены к своему устройству, и у вас есть доступ к оболочке ( adb shell).

Как только это будет сделано, вы можете удалить приложение с помощью этой команды pm uninstall --user 0 <package.name>. 0 - это root-идентификатор, поэтому вам не нужно слишком рутировать свое устройство.

Вот пример того, как я сделал на своем 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
Лукаш Дыновски
источник
--user 0очень полезно выполнить удаление как root
bw_üezi