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


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

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

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

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

6 117

6 ответов:

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

adb shell am start -a android.intent.action.DELETE -d package:<your app package>

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

adb shell pm uninstall-k com.имя_пакета

например:

adb shell pm uninstall -k com.fedmich.pagexray

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

используя 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"

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

подробности указанной команды можно узнать, проверив amС помощью adb shell am.

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

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

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}

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

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

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

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

adb devices -l

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

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

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

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

вот пример, как я сделал на моем 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