lệnh shell adb để làm cho hộp thoại gỡ cài đặt gói Android xuất hiện


126

Tôi đã adbchạy và thiết bị được kết nối với hệ thống của tôi ở chế độ gỡ lỗi,

Tôi muốn gỡ cài đặt ứng dụng bằng cách sử dụng mục đích khởi chạy bằng adb shell am start <INTENT>

Tôi không muốn gỡ cài đặt bằng cách sử dụng adb uninstall com.company.apppackagevà tôi không muốn làm điều đó ngay cả bằng cách sử dụngadb shell pm uninstall com.company.apppackage

Làm cách nào tôi có thể gửi ý định bằng android.intent.action.DELETEhành động cho một gói cụ thể cho phép người dùng xem lời nhắc và gỡ cài đặt chương trình?

Câu trả lời:


178

Bạn có thể làm điều đó từ adb bằng lệnh này:

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

2
bạn có thể vui lòng cho biết gói -d là gì: <gói ứng dụng của bạn> là viết tắt của? Có tài liệu nào ở đó không?
Rinkal Bhanderi

11
-d có nghĩa là dữ liệu. -a có nghĩa là hành động. Bạn đang khởi chạy một ý định với hành động là "Xóa" và dữ liệu dưới dạng "gói: gói ứng dụng của bạn". Điều này sẽ bắt đầu hoạt động phụ trách gỡ cài đặt các gói và cố gắng gỡ cài đặt gói được cung cấp trong dữ liệu. Tài liệu có thể được tìm thấy bằng cách sử dụng lệnh "adb shell am".
pcans

Không, nếu ứng dụng của bạn chứa DevicePolicyManager được kích hoạt, bạn sẽ phải tắt thủ công trước.
pcans

Lệnh trên hiển thị hộp thoại Xác nhận ứng dụng này trên điện thoại. Sử dụng adb shell pm uninstall -k com.packagenamethay thế.
ViliusK

1
Điều này sẽ không hoạt động cho các ứng dụng hệ thống. Hộp thoại nhắc sẽ xuất hiện, nhưng ứng dụng sẽ không được gỡ cài đặt.
IgorGanapolsky

218

Sử dụng lệnh này trong cmd:

adb shell pm gỡ cài đặt -k com.packagename

Ví dụ:

adb shell pm uninstall -k com.fedmich.pagexray

Các -klá cờ nói với người quản lý gói để giữ các thư mục bộ nhớ cache và dữ liệu xung quanh, mặc dù các ứng dụng bị xóa. Nếu bạn muốn gỡ cài đặt sạch, không chỉ định -k.


8
Tôi thích câu trả lời này tốt hơn. Bởi vì, với cái này bạn sẽ không nhận được hộp thoại xác nhận chưa hoàn tác.
joctee

2
@joctee, tôi cũng vậy nhưng câu hỏi đặc biệt nói rằng họ không muốn gỡ cài đặt bằng một ý định.
OrhanC1

@Lohoris, Đã làm cho nó hoạt động .. đảm bảo bạn xóa "+" trên câu trả lời của mọi người
fedmich

32
@Johnny_D Cờ -k báo cho người quản lý gói giữ các thư mục dữ liệu và bộ đệm xung quanh, mặc dù ứng dụng đã bị xóa. Nếu bạn muốn gỡ cài đặt sạch, đừng chỉ định -k.
Yojimbo

2
Tôi tiếp tục nhận được thông báo Thất bại khi cố gắng sử dụng lệnh này.
IgorGanapolsky

12

Sử dụng ADB, bạn có thể sử dụng bất kỳ lệnh nào trong ba lệnh sau:

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"

Thay thế GÓI bằng tên gói của ứng dụng người dùng đã cài đặt. Ứng dụng không phải là quản trị viên thiết bị để lệnh hoạt động thành công. Tất cả các lệnh đó sẽ yêu cầu xác nhận của người dùng để xóa ứng dụng.

Có thể biết chi tiết về lệnh đã nói bằng cách kiểm tra việc sử dụng của amadb shell am .

Tôi đã nhận được thông tin về các lệnh đó bằng Elixir 2 (sử dụng bất kỳ ứng dụng tương đương nào). Tôi đã sử dụng nó để hiển thị các hoạt động của ứng dụng Trình cài đặt gói (GUI mà bạn thấy trong quá trình cài đặt và xóa ứng dụng) cũng như các ý định liên quan. Có bạn đi.

Cách khác tôi đã sử dụng là: Tôi đã cố gắng gỡ cài đặt ứng dụng bằng GUI cho đến khi tôi được hiển thị xác nhận cuối cùng. Tôi đã không xác nhận nhưng thực hiện lệnh

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

Trong số những thứ khác, nó cho tôi thấy các chi tiết hữu ích của ý định được thông qua trong nền. Thí dụ:

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

Tại đây, bạn có thể thấy hành động, dữ liệu, cờ và thành phần - đủ cho mục tiêu.


Tôi hiểu rằng câu hỏi đã cũ nên câu trả lời của tôi có thể không liên quan nhiều. Nhưng nó hoàn toàn phù hợp với các phiên bản Android được sử dụng bởi phần lớn người dùng hiện nay.
Firelord

6

Mặc dù các câu trả lời trên hoạt động nhưng trong trường hợp bạn có nhiều thiết bị được kết nối với máy tính của mình thì có thể sử dụng lệnh sau để xóa ứng dụng khỏi một trong số chúng:

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

Nếu bạn muốn tìm hiểu nối tiếp thiết bị thì hãy sử dụng lệnh sau:

adb devices -l

Điều này sẽ cung cấp cho bạn một danh sách các thiết bị kèm theo. Cột bên trái hiển thị nối tiếp thiết bị.


3

Trong trường hợp của tôi, adb shell pm list packagestrước tiên tôi phải xem các gói / ứng dụng được cài đặt trong thiết bị hoặc trình giả lập Android của mình là gì, sau đó khi xác định gói / ứng dụng mong muốn, tôi sẽ thực hiện adb shell pm uninstall -k com.package.name.


3

Tôi giả sử rằng bạn kích hoạt developer modetrên thiết bị Android của mình và bạn được kết nối với thiết bị của mình và bạn có quyền truy cập shell ( adb shell).

Một khi điều này được thực hiện, bạn có thể gỡ cài đặt ứng dụng với lệnh này pm uninstall --user 0 <package.name>. 0 là id gốc - đây là cách bạn không cần quá root thiết bị của mình.

Dưới đây là một ví dụ về cách tôi đã làm trên chiếc Huawei P110 của mình

# 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để thực hiện xóa như root rất hữu ích
bw_üezi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.