команда adb shell, щоб зробити діалогове вікно видалення пакета 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>

2
Ви можете, будь ласка, сказати, що таке -d пакунок: <Ваш пакет додатків> означає? якась документація є?
Рінкал Бхандері

11
-d означає дані. -а означає дію. Ви запускаєте наміри з дією як "Видалити", а дані - "пакунок: ваш додаток". Це запустить діяльність, відповідальну за видалення пакунків, і спробує видалити пакет, наданий у даних. Документацію можна знайти за допомогою команди "adb shell am".
pcans

Ні, якщо ваш додаток містить активований DevicePolicyManager, вам доведеться спочатку його відключити вручну.
pcans

Наведена вище команда показує діалогове вікно підтвердження програми «Видалити це додаток» на телефоні. Використовуйте adb shell pm uninstall -k com.packagenameзамість цього.
ViliusK

1
Це не працює для системних додатків. З'явиться діалогове вікно, але додаток не буде видалено.
ІгорГанапольський

218

Використовуйте цю команду в cmd:

adb shell pm uninstall -k com.packagename

Наприклад:

adb shell pm uninstall -k com.fedmich.pagexray

-kПрапор говорить менеджер пакетів , щоб зберегти кеш і дані каталогів навколо, навіть якщо додаток видаляється. Якщо ви хочете чисту видалення, не вказуйте -k.


8
Мені подобається ця відповідь краще. Тому що, за допомогою цього ви не отримаєте діалогове вікно підтвердження відновлення.
Joctee

2
@joctee, так це я, але в питанні конкретно сказано, що вони не хочуть видаляти за допомогою наміру.
OrhanC1

@Lohoris, Зробіть це. Переконайтесь, що ви видалили "+" на відповідь
Неверева

32
@Johnny_D Прапор -k повідомляє менеджеру пакунків зберігати кеш і каталоги даних навколо, навіть якщо додаток видалено. Якщо ви хочете отримати чисту видалення, не вказуйте -k.
Yojimbo

2
Я постійно намагаюся отримувати повідомлення про відмову при спробі використання цієї команди.
ІгорГанапольський

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"

Замініть ПАКЕТ на назву пакета встановленої програми користувача. Додаток не повинен бути адміністратором пристрою для успішної роботи команди. Усі ці команди потребують підтвердження користувача для видалення програми.

Деталі згаданої команди можна дізнатися, перевіривши використання am за допомогою adb shell am.

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

Я використовував альтернативний спосіб: я намагався видалити додаток за допомогою 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}

Тут ви можете побачити дію, дані, прапор та компонент - достатньо для досягнення мети.


Я розумію, що питання старе, тому моя відповідь може бути не дуже актуальною. Але це абсолютно актуально для версій Android, якими користується сьогодні більшість користувачів.
Firelord

6

Хоча вищезазначені відповіді працюють, але у випадку, якщо до комп'ютера підключено кілька пристроїв, для видалення програми з одного з них можна використовувати наступну команду:

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

Якщо ви хочете дізнатись серійний пристрій, скористайтеся такою командою:

adb devices -l

Це дасть вам список приєднаних пристроїв. У лівій колонці показані серіали пристрою.


3

У моєму випадку я роблю, adb shell pm list packagesщоб спершу побачити, які пакунки / програми встановлені в моєму пристрої або емуляторі Android, потім, після знаходження потрібного пакета / програми, я роблю adb shell pm uninstall -k com.package.name.


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.