adb shell perintah untuk membuat dialog penghapusan paket Android muncul

126

Saya telah adbmenjalankan dan perangkat terhubung ke sistem saya dalam mode debugging,

Saya ingin mencopot aplikasi menggunakan peluncuran maksud menggunakan adb shell am start <INTENT>

Saya tidak ingin menghapus instalasi menggunakan adb uninstall com.company.apppackagedan saya tidak ingin melakukannya bahkan dengan menggunakanadb shell pm uninstall com.company.apppackage

Bagaimana saya bisa mengirim niat dengan android.intent.action.DELETEtindakan untuk paket tertentu yang memungkinkan pengguna untuk melihat prompt dan menghapus instalasi program?

Rinkal Bhanderi
sumber

Jawaban:

178

Anda dapat melakukannya dari adb menggunakan perintah ini:

adb shell am start -a android.intent.action.DELETE -d package:<your app package>
pcans
sumber
2
dapatkah Anda memberi tahu paket -d apa: <paket aplikasi Anda> kependekan? ada dokumentasi?
Rinkal Bhanderi
11
-d berarti data. -A berarti tindakan. Anda meluncurkan Intent dengan tindakan sebagai "Hapus", dan data sebagai "paket: paket aplikasi Anda". Ini akan memulai aktivitas yang bertanggung jawab untuk menghapus paket dan mencoba menghapus instalasi paket yang disediakan dalam data. Dokumentasi dapat ditemukan dengan menggunakan perintah "adb shell am".
pcans
Tidak, jika aplikasi Anda berisi DevicePolicyManager yang diaktifkan, Anda harus menonaktifkannya secara manual terlebih dahulu.
pcans
Perintah di atas menunjukkan dialog Hapus Aplikasi Ini pada ponsel. Gunakan adb shell pm uninstall -k com.packagenamesebagai gantinya.
ViliusK
1
Ini tidak akan berfungsi untuk aplikasi sistem. Dialog cepat akan muncul, tetapi aplikasi tidak akan dihapus.
IgorGanapolsky
218

Gunakan perintah ini dalam cmd:

adb shell pm uninstall -k com.packagename

Sebagai contoh:

adb shell pm uninstall -k com.fedmich.pagexray

The -kbendera memberitahu manajer paket untuk menjaga cache dan data direktori sekitar, meskipun aplikasi dihapus. Jika Anda ingin menghapus instalasi yang bersih, jangan tentukan -k.

neverever415
sumber
8
Saya suka jawaban ini lebih baik. Karena, dengan yang ini Anda tidak akan mendapatkan kotak dialog konfirmasi yang tidak dihapus.
Joctee
2
@ Joctee, Saya juga tetapi pertanyaannya secara spesifik mengatakan bahwa mereka tidak ingin menghapus instalasi menggunakan maksud.
OrhanC1
@Lohoris, Telah membuatnya berfungsi .. pastikan Anda menghapus "+" pada jawaban
neverever
32
@Johnny_D Bendera -k memberitahu manajer paket untuk menjaga cache dan direktori data tetap ada, meskipun aplikasi dihapus. Jika Anda ingin menghapus instalasi yang bersih, jangan tentukan -k.
Yojimbo
2
Saya terus menerima pesan Kegagalan saat mencoba menggunakan perintah ini.
IgorGanapolsky
12

Menggunakan ADB, Anda dapat menggunakan salah satu dari tiga perintah berikut:

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"

Ganti PAKET dengan nama paket aplikasi pengguna yang diinstal. Aplikasi tidak boleh menjadi administrator perangkat agar perintah berhasil bekerja. Semua perintah itu akan membutuhkan konfirmasi pengguna untuk menghapus aplikasi.

Rincian dari kata perintah dapat diketahui dengan memeriksa pagi penggunaan 's menggunakan adb shell am.

Saya mendapat info tentang perintah-perintah itu menggunakan Elixir 2 (menggunakan aplikasi apa pun yang setara). Saya menggunakannya untuk menunjukkan aktivitas aplikasi Penginstal Paket (GUI yang Anda lihat selama instalasi dan penghapusan aplikasi) serta maksud terkait. Ini dia.

Cara alternatif yang saya gunakan adalah: Saya mencoba menghapus aplikasi menggunakan GUI sampai saya diperlihatkan konfirmasi akhir. Saya tidak mengkonfirmasi tetapi menjalankan perintah

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

Di antara hal-hal lain, itu menunjukkan kepada saya detail berguna tentang maksud yang dilewatkan di latar belakang. Contoh:

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

Di sini, Anda dapat melihat aksi, data, bendera, dan komponen - cukup untuk sasaran.

Raja Api
sumber
Saya mengerti bahwa pertanyaannya sudah tua sehingga jawaban saya mungkin tidak terlalu relevan. Tetapi ini benar-benar relevan dengan versi Android yang digunakan oleh sebagian besar pengguna saat ini.
Firelord
6

Sementara jawaban di atas berfungsi tetapi jika Anda memiliki beberapa perangkat yang terhubung ke komputer Anda maka perintah berikut dapat digunakan untuk menghapus aplikasi dari salah satu di antaranya:

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

Jika Anda ingin mengetahui serial perangkat kemudian gunakan perintah berikut:

adb devices -l

Ini akan memberi Anda daftar perangkat yang terpasang. Kolom kiri menunjukkan serial perangkat.

sttaq
sumber
3

Dalam kasus saya, saya melakukan adb shell pm list packagesuntuk melihat dulu paket / aplikasi apa yang diinstal di perangkat atau emulator Android saya, kemudian setelah menemukan paket / aplikasi yang diinginkan, saya melakukan adb shell pm uninstall -k com.package.name.

warfreak92
sumber
3

Saya berasumsi bahwa Anda mengaktifkan developer modeperangkat Android Anda dan Anda terhubung ke perangkat Anda dan Anda memiliki akses shell (adb shell ).

Setelah ini selesai, Anda dapat menghapus aplikasi dengan perintah ini pm uninstall --user 0 <package.name>. 0 adalah id root - dengan cara ini Anda tidak perlu terlalu root perangkat Anda.

Berikut adalah contoh bagaimana yang saya lakukan pada Huawei P110 lite saya

# 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
sumber
--user 0untuk melakukan delete sebagai root sangat berguna
bw_üezi