เปิดใช้งานและปิดใช้งานแอประบบผ่าน ADB


คำตอบ:


67

ใช่. pm disable <package name>คำสั่งคือ คุณต้องเป็นคนรูทเพื่อทำสิ่งนี้:

เปิดเชลล์และรับรูท:

PC> adb shell
shell@hammerhead:/ $ su

แสดงรายการแอพที่เปิดใช้งานทั้งหมดกรองตาม "เครื่องคิดเลข":

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

ปิดการใช้งานแอพ:

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

แสดงรายการแอปที่ถูกปิดใช้งานทั้งหมด:

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

สิ่งอื่น ๆ ที่ควรค่าแก่การสังเกต:

  1. ในการทดสอบของฉันแอปที่ถูกปิดใช้งานในลักษณะนี้จะหายไปอย่างสมบูรณ์จากการตั้งค่า> รายการแอพ พวกเขาดูเหมือนจะไม่ปรากฏในแท็บ "ปิดการใช้งาน"
  2. pm enable <package name>คุณสามารถเปิดใช้งานแอพพลิเคกับ ที่จริงแล้วนี่เป็นวิธีเดียวที่จะเปิดใช้งานได้อีกครั้งในประสบการณ์ของฉัน

เป็นไปได้ไหมที่จะหลีกเลี่ยงการซ่อนแอพที่เลือกไว้เมื่อปิดการใช้งาน
นักพัฒนา android

1
@androiddeveloper ไม่การซ่อนแอปอย่างสมบูรณ์รวมถึงจาก UI เป็นแนวคิดทั้งหมดที่อยู่เบื้องหลัง
Izzy

@ อิซซี่ฉันเห็น เป็นไปได้ไหมที่จะทำในสิ่งที่ตรงกันข้ามโดยซ่อนความหมายโดยไม่ปิดการใช้งาน
นักพัฒนา android

ในทางทฤษฎีใช่ฉันเดา แต่ฉันไม่รู้ว่าจะทำอย่างไร มี "แอพ" ในร้านค้าที่ไม่ปรากฏที่ใดเมื่อติดตั้ง (เช่นพวกเขาจะให้เฉพาะการตั้งค่าเพิ่มเติมในแอพอื่น ๆ หรือเสนอ "บริการที่มองไม่เห็น" เช่น "ผู้จัดการบัญชี" สำหรับบริการเฉพาะ) ซึ่งพิสูจน์ได้ว่า อย่างใด; แต่ฉันเกรงว่าจะต้องทำในแอพManifestหรือสิ่งที่ชอบ (ฉันไม่ใช่ Android dev ดังนั้นฉันจึงบอกไม่ได้)
Izzy

เป็นไปได้ที่จะเปิดใช้งานแอพโดยหน้า playstore
Info-Screen

7

นอกเหนือจากคำตอบโดย @eldarerathis คุณสามารถปิดการใช้งานแอพสำหรับผู้ใช้ที่เฉพาะเจาะจง ฉันใช้วิธีนี้เพื่อลบแอพบางตัวจากผู้ใช้ที่ถูก จำกัด ซึ่งไม่ได้อยู่ในรายการในหน้าจอการตั้งค่าผู้ใช้ adb shellคำสั่งทั้งหมดจาก จำเป็นต้องเข้าถึงรูทเพื่อทำการเปลี่ยนแปลง

ประการแรกรับรหัสของผู้ใช้:

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

แล้วก็

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

เพื่อเปิดใช้งานอีกครั้ง

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

ในตัวอย่างนี้ Alice สามารถใช้ตัวจัดการไฟล์ แต่ Bob ไม่สามารถทำได้

คุณสามารถทำสิ่งที่คล้ายกันกับแทนhide disableฉันไม่แน่ใจว่าวิธีไหนดีที่สุด แต่ดูคำตอบนี้ การสนทนาhideคือunhide(อาจจำเป็นต้องรีบูตเพื่อให้เกิดผลunhide)

pm list pacakges --user 11คุณสามารถแสดงรายการแพ็กเกจ ให้-eรายการแพคเกจที่เปิดใช้งานหรือ-dถ้าคุณต้องการที่จะเห็นคนพิการ ดูเหมือนจะไม่มีตัวกรองสำหรับแพ็คเกจที่ซ่อนอยู่

FWIW ฉันลองใช้ Lollipop กับ CM 12.1 ใน Amazon Fire (KFFOWI) ข้างต้น


3

สิ่งนี้จะทำงานได้ไม่ว่าแอพนั้นจะเป็นแอพระบบหรือแอพของบุคคลที่สาม (ติดตั้งโดยผู้ใช้)


ดูคำตอบของฉันที่กำหนดชื่อแพคเกจของแอพของคุณเพื่อรับชื่อแพ็กเกจของแอพที่เกี่ยวข้องและใช้ shellเพื่อรันคำสั่งเหล่านี้ ( ต้องมีการเข้าถึงรูท ):

adb shell
su
pm ปิดใช้งาน PACKAGE # ปิดใช้งานแอปและซ่อนไว้ในการตั้งค่า -> แอปพลิเคชัน 
pm hide PACKAGE # ทางเลือก; สำหรับ Android Lollipop ขึ้นไป
แพ็คเกจ cmd ระงับ PACKAGE # ทางเลือก; แพ็กเกจยังคงมองเห็นได้ในแอพ Launcher และ Settings แต่ไม่สามารถใช้ คุณลักษณะของการดูแลอุปกรณ์

PACKAGE อ้างถึงชื่อแพ็คเกจของแอป

หากต้องการคืนสถานะแอปให้แทนที่ปิดการใช้งานด้วยการเปิดใช้งานซ่อนด้วยเลิกซ่อนและระงับด้วยการยกเลิกการระงับในคำสั่งที่กล่าวและดำเนินการด้วยสิทธิ์พิเศษ

หากคุณใช้ Android KitKat ขึ้นไปและไม่สามารถเข้าถึงรูทได้ให้ใช้ในพีซีเพื่อรันคำสั่งนี้:

adb shell pm block PACKAGE # สำหรับ Android KitKat
adb shell pm hide PACKAGE # สำหรับ Android Lollipop เท่านั้น
adb shell pm แพ็คเกจผู้ใช้ปิดการใช้งาน # ทางเลือกเพื่อ `pm hide`; สำหรับ Android Lollipop และสูงกว่า; การทำงานเช่นเดียวกับการปิดการใช้งานแอพผ่านการตั้งค่า

วิธีคืนสถานะแอปให้ทำดังนี้

adb shell pm ยกเลิกการปิดกั้น PACKAGE # สำหรับ Android KitKat
adb shell pm ยกเลิกการซ่อนแพคเกจ # สำหรับ Android Lollipop และเฉพาะในกรณีที่คุณใช้ 'pm hide' ก่อนหน้านี้
adb shell pm เปิดใช้งาน PACKAGE # สำหรับ Android Lollipop และสูงกว่า

การเปลี่ยนแปลงจะเกิดขึ้นทันที

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.