Kích hoạt và vô hiệu hóa các ứng dụng hệ thống thông qua ADB


49

Có lệnh adb nào để bật / tắt ứng dụng hệ thống không?

Cảm ơn

Câu trả lời:


67

Đúng. Lệnh là pm disable <package name>. Bạn phải root để làm điều này:

Mở shell và lấy root:

PC> adb shell
shell@hammerhead:/ $ su

Liệt kê tất cả các ứng dụng được kích hoạt, lọc theo "máy tính":

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

Vô hiệu hóa ứng dụng:

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

Liệt kê tất cả các ứng dụng bị vô hiệu hóa:

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:/ #

Một số điều đáng chú ý khác:

  1. Trong thử nghiệm của tôi, các ứng dụng bị tắt theo cách này sẽ biến mất hoàn toàn khỏi danh sách Cài đặt> Ứng dụng. Chúng thậm chí dường như không được hiển thị trong tab "Đã tắt"
  2. Bạn có thể kích hoạt lại ứng dụng với pm enable <package name>. Trên thực tế, đây dường như là cách duy nhất để kích hoạt lại chúng, theo kinh nghiệm của tôi.

Có thể tránh việc ẩn ứng dụng đã chọn khi tắt nó không?
nhà phát triển Android

1
@androiddeveloper Không. Ẩn hoàn toàn ứng dụng , bao gồm cả từ UI, là toàn bộ ý tưởng đằng sau nó.
Izzy

@Izzy tôi thấy. Có thể làm ngược lại, có nghĩa là chỉ che giấu, mà không vô hiệu hóa?
nhà phát triển Android

Về mặt lý thuyết, tôi đoán vậy; nhưng tôi không biết làm thế nào để làm điều đó Có một số "ứng dụng" trên các cửa hàng không xuất hiện khi cài đặt (vì chúng chỉ cung cấp cài đặt bổ sung trong một số ứng dụng khác hoặc cung cấp một số "dịch vụ vô hình" như "quản lý tài khoản" cho các dịch vụ cụ thể), điều đó chứng tỏ nó sẽ hoạt động bằng cách nào đó; nhưng tôi sợ điều đó sẽ được thực hiện trong ứng dụng Manifesthoặc tương tự (Tôi không phải là nhà phát triển Android, vì vậy tôi không thể nói).
Izzy

có thể kích hoạt ứng dụng bằng trang playstore.
Màn hình thông tin

7

Ngoài câu trả lời của @eldarerathis, bạn có thể vô hiệu hóa một ứng dụng cho một người dùng cụ thể. Tôi đã sử dụng phương pháp này để xóa một số ứng dụng khỏi người dùng bị hạn chế không được liệt kê trên màn hình cài đặt người dùng. Tất cả các lệnh từ một adb shell. Truy cập root là cần thiết để thực hiện thay đổi.

Đầu tiên, lấy id của người dùng:

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

Sau đó

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

Để kích hoạt lại

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

Trong ví dụ này, Alice có thể sử dụng trình quản lý tệp nhưng Bob thì không.

Bạn có thể làm một điều tương tự với hidethay vì disable. Tôi không chắc cái nào tốt nhất, nhưng hãy xem câu trả lời này . Nghịch đảo hideunhide(có thể cần phải khởi động lại để có hiệu lực unhide).

Bạn có thể liệt kê các gói với pm list pacakges --user 11. Đưa -era danh sách các gói được kích hoạt hoặc -dnếu bạn muốn xem các gói bị vô hiệu hóa. Dường như không có bộ lọc cho các gói ẩn.

FWIW, tôi đã thử những điều trên trên Lollipop với CM 12.1 trên Amazon Fire (KFFOWI).


3

Điều này sẽ hoạt động bất kể ứng dụng là ứng dụng hệ thống hay ứng dụng của bên thứ ba (người dùng đã cài đặt).


Xem câu trả lời của tôi tại Xác định tên gói của ứng dụng của bạn để lấy tên gói của ứng dụng liên quan và sử dụng shell để thực thi các lệnh này ( yêu cầu quyền truy cập root ):

vỏ adb
su
pm tắt GÓI # vô hiệu hóa ứng dụng và ẩn nó trong Cài đặt -> Ứng dụng 
pm ẩn GÓI # thay thế; cho Android Lollipop trở lên
gói cmd tạm ngưng GÓI # thay thế; gói vẫn hiển thị trong ứng dụng Launcher và Cài đặt nhưng không thể sử dụng; một tính năng của Quản trị thiết bị

PACKAGE đề cập đến tên gói của ứng dụng

Để phục hồi các ứng dụng, thay thế vô hiệu hóa với phép , trốn với Bỏ ẩn , và đình chỉ với huỷ tạm ngừng trong lệnh nói và thực hiện nó với quyền root.

Nếu bạn đã có Android KitKat trở lên và không có quyền truy cập root , hãy sử dụng trong PC để thực hiện lệnh này:

adb shell pm chặn GÓI # cho Android KitKat
adb shell pm ẩn GÓI # chỉ dành cho Android Lollipop
adb shell pm vô hiệu hóa người dùng GÓI # thay thế cho `pm hide`; cho Android Lollipop trở lên; điều này hoạt động giống như vô hiệu hóa một ứng dụng thông qua ứng dụng Cài đặt

Để khôi phục ứng dụng:

adb shell pm bỏ chặn GÓI # cho Android KitKat
adb shell pm bỏ ẩn GÓI # cho Android Lollipop và chỉ khi bạn đã sử dụng `pm hide` trước đó
adb shell pm cho phép GÓI # cho Android Lollipop trở lên

Thay đổi sẽ diễn ra ngay lập tức.

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.