Mengaktifkan dan menonaktifkan aplikasi sistem melalui ADB

49

Apakah ada perintah adb untuk mengaktifkan / menonaktifkan aplikasi sistem?

Terima kasih

lao
sumber

Jawaban:

67

Iya. Perintahnya adalah pm disable <package name>. Anda harus menjadi root untuk melakukan ini:

Buka shell dan dapatkan root:

PC> adb shell
shell@hammerhead:/ $ su

Daftar semua aplikasi yang diaktifkan, filter dengan "kalkulator":

root@hammerhead:/ # pm list packages -e | grep 'calculator'
package:com.android.calculator2

Nonaktifkan aplikasi:

root@hammerhead:/ # pm disable com.android.calculator2
Package com.android.calculator2 new state: disabled

Daftar semua aplikasi yang dinonaktifkan:

root@hammerhead:/ # pm list packages -d
package:com.android.calculator2
package:com.google.android.apps.inputmethod.hindi
package:jp.co.omronsoft.iwnnime.ml
package:com.google.android.inputmethod.pinyin
package:com.google.android.inputmethod.korean
package:com.google.earth
root@hammerhead:/ #

Beberapa hal lain yang perlu diperhatikan:

  1. Dalam pengujian saya, aplikasi yang dinonaktifkan dengan cara ini sepenuhnya hilang dari daftar Pengaturan> Aplikasi. Mereka bahkan tidak ditampilkan di tab "Dinonaktifkan"
  2. Anda dapat mengaktifkan kembali aplikasi dengan pm enable <package name>. Sebenarnya, ini sepertinya satu - satunya cara untuk mengaktifkannya kembali, menurut pengalaman saya.
eldarerathis
sumber
Apakah mungkin untuk menghindari menyembunyikan aplikasi yang dipilih saat menonaktifkannya?
pengembang android
1
@androiddeveloper No. Menyembunyikan aplikasi sepenuhnya , termasuk dari UI, adalah seluruh ide di baliknya.
Izzy
@Izzy, begitu. Apakah mungkin melakukan yang sebaliknya, artinya hanya bersembunyi, tanpa melumpuhkan?
pengembang android
Secara teoritis ya saya kira; tetapi saya tidak tahu bagaimana melakukannya. Ada beberapa "aplikasi" di toko-toko yang muncul di mana saja ketika diinstal (karena mereka misalnya hanya menyediakan pengaturan tambahan di beberapa aplikasi lain, atau menawarkan beberapa "layanan tak terlihat" seperti "manajer akun" untuk layanan tertentu), yang membuktikannya harus bekerja entah bagaimana; tapi saya khawatir itu harus dilakukan di aplikasi Manifestatau sejenisnya (Saya bukan Android dev, jadi saya tidak tahu).
Izzy
itu memungkinkan untuk mengaktifkan aplikasi dengan halaman playstore-nya.
Layar Info
7

Lebih jauh ke jawaban oleh @eldarerathis, Anda dapat menonaktifkan aplikasi untuk pengguna tertentu. Saya menggunakan metode ini untuk menghapus beberapa aplikasi dari pengguna terbatas yang tidak terdaftar di layar pengaturan pengguna. Semua perintah dari adb shell. Akses root diperlukan untuk membuat perubahan.

Pertama, dapatkan id pengguna:

$ pm list users
Users:
  UserInfo{0:Alice:13} running
  UserInfo{11:Bob:18} running

Kemudian

$ pm disable --user 11 com.cyanogenmod.filemanager
Package com.cyanogenmod.filemanager new state: disabled-user

Untuk mengaktifkan kembali

# pm enable --user 11 com.cyanogenmod.filemanager

Dalam contoh ini, Alice dapat menggunakan manajer file tetapi Bob tidak bisa.

Anda dapat melakukan hal serupa dengan hidealih - alih disable. Saya tidak yakin mana yang terbaik, tetapi lihat jawaban ini . Kebalikannya hideadalah unhide(reboot mungkin diperlukan untuk memberi efek unhide).

Anda dapat mendaftar paket dengan pm list pacakges --user 11. Berikan -eke daftar paket yang diaktifkan atau -djika Anda ingin melihat yang dinonaktifkan. Tampaknya tidak ada filter untuk paket tersembunyi.

FWIW, saya mencoba yang di atas pada Lollipop dengan CM 12.1 di Amazon Fire (KFFOWI).

starfry
sumber
3

Ini harus bekerja terlepas dari apakah aplikasi tersebut adalah aplikasi sistem atau aplikasi pihak ketiga (pengguna terpasang).


Lihat jawaban saya di Tentukan nama paket aplikasi Anda untuk mendapatkan nama paket aplikasi terkait dan gunakan shell untuk menjalankan perintah ini ( memerlukan akses root ):

adb shell
su
pm nonaktifkan PACKAGE # menonaktifkan aplikasi dan menyembunyikannya di Pengaturan -> Aplikasi 
sembunyikan PAKET # alternatif; untuk Android Lollipop dan di atasnya
paket cmd menangguhkan PAKET # alternatif; paket tetap terlihat di aplikasi Peluncur dan Pengaturan tetapi tidak dapat digunakan; fitur Administrasi Perangkat

PACKAGE mengacu pada nama paket aplikasi

Untuk mengembalikan aplikasi, ganti disable dengan memungkinkan , hide dengan unhide , dan menangguhkan dengan unsuspend di perintah kata dan jalankan dengan hak istimewa root.

Jika Anda memiliki Android KitKat atau lebih dan tidak memiliki akses root , gunakan di PC untuk menjalankan perintah ini:

adb shell pm blok PACKAGE # untuk Android KitKat
adb shell pm sembunyikan PAKET # hanya untuk Android Lollipop
adb shell pm nonaktifkan-pengguna PAKET # alternatif untuk `pm hide`; untuk Android Lollipop ke atas; ini berfungsi seperti menonaktifkan aplikasi melalui Pengaturan aplikasi

Untuk mengembalikan aplikasi:

adb shell pm unblock PACKAGE # untuk Android KitKat
adb shell pm unhide PACKAGE # untuk Android Lollipop dan hanya jika Anda menggunakan `pm hide` sebelumnya
adb shell pm aktifkan PACKAGE # untuk Android Lollipop dan yang lebih tinggi

Perubahan akan segera terjadi.

Firelord
sumber