Android รองรับผู้ใช้หลายคนในอุปกรณ์เครื่องเดียว หากต้องการทราบข้อมูลเพิ่มเติม ดูการรองรับผู้ใช้หลายคน เนื่องจากแพ็กเกจระบบบางรายการอาจไม่เป็นประโยชน์สำหรับผู้ใช้ Android บางประเภท คุณจึงใช้รายการที่อนุญาตเพื่อระบุแพ็กเกจระบบที่ควรติดตั้งไว้ล่วงหน้าสำหรับผู้ใช้แต่ละประเภทได้ การไม่ติดตั้งแพ็กเกจระบบที่ไม่จำเป็นไว้ล่วงหน้าจะช่วยให้คุณเพิ่มประสิทธิภาพเวลาในการสร้างผู้ใช้ เวลาเริ่มต้น และการใช้หน่วยความจำได้
ใช้ไฟล์ XML การกำหนดค่าระบบซึ่งอิงตาม frameworks/base/data/etc/preinstalled-packages-platform.xml
เพื่อประกาศว่าควรติดตั้งแพ็กเกจระบบใดให้กับผู้ใช้ใหม่ตั้งแต่แรกโดยอิงตามประเภทผู้ใช้ แพ็กเกจระบบทั้งหมดในอุปกรณ์ควรมี
รายการในไฟล์ XML (ผูกกับชื่อไฟล์ Manifest) ยกเว้นการวางซ้อนแบบคงที่
ซึ่งระบบดำเนินการกับรายการโดยอัตโนมัติ
ตามรายการสำหรับ
แพ็กเกจเป้าหมายซ้อนทับ
โหมดการกําหนดค่าจะควบคุมวิธีที่อุปกรณ์ควรจัดการแพ็กเกจระบบที่ไม่ได้แสดงที่นี่
ประเภทผู้ใช้
ประเภทผู้ใช้พื้นฐาน (ผู้ใช้ทุกคนคือประเภทต่อไปนี้อย่างน้อย 1 ประเภท)
ประเภทของผู้ใช้ | คำอธิบาย |
---|---|
SYSTEM |
ผู้ใช้ 0 |
FULL |
ผู้ใช้ที่เป็นบุคคลธรรมดาที่ไม่ใช่โปรไฟล์ |
PROFILE |
ผู้ใช้ที่เป็นมนุษย์โปรไฟล์ |
ความหมายของแต่ละคำมีความหมายใน
frameworks/base/core/java/android/content/pm/UserInfo.java
คุณจะได้รับการควบคุมที่ละเอียดยิ่งขึ้นโดยการระบุประเภทผู้ใช้แต่ละประเภท เนื่องจากผู้ใช้ทุกคนจะจัดอยู่ในประเภทผู้ใช้ประเภทใดประเภทหนึ่งเหล่านี้ ซึ่งรวมถึงประเภทผู้ใช้ AOSP ที่กําหนดไว้ใน frameworks/base/core/java/android/os/UserManager.java
และประเภทผู้ใช้ที่กําหนดเองของ OEM ที่กําหนดไว้ใน frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.java.
ดูข้อมูลเพิ่มเติมได้ในหน้าประเภทผู้ใช้
ปัจจุบันผู้ใช้ AOSP มีประเภทต่อไปนี้
android.os.usertype.full.SYSTEM
android.os.usertype.full.SECONDARY
android.os.usertype.full.GUEST
android.os.usertype.full.DEMO
android.os.usertype.full.RESTRICTED
android.os.usertype.profile.MANAGED
android.os.usertype.system.HEADLESS
ตัวอย่าง
ตัวอย่างต่อไปนี้จะกล่าวถึงกรณีการใช้งานที่พบบ่อยที่สุด
- สำหรับแพ็กเกจระบบที่จะติดตั้งล่วงหน้าใน "ผู้ใช้ 0" เท่านั้น ให้ทำดังนี้
<install-in-user-type package="com.android.example"> <install-in user-type="SYSTEM" /> </install-in-user-type>
- หากต้องการให้ระบบติดตั้งแพ็กเกจไว้ล่วงหน้าสำหรับผู้ใช้ทุกคน (เช่น เว็บเบราว์เซอร์) ซึ่งก็คือการติดตั้งในผู้ใช้ประเภท
FULL
หรือPROFILE
ซึ่งจัดการกับผู้ใช้ทุกคน ให้ทำดังนี้<install-in-user-type package="com.android.example"> <install-in user-type="FULL" /> <install-in user-type="PROFILE" /> </install-in-user-type>
- สำหรับการติดตั้งแพ็กเกจระบบล่วงหน้าในผู้ใช้ทุกคนยกเว้นผู้ใช้โปรไฟล์
ตัวอย่างเช่น เงื่อนไขนี้อาจใช้กับแอปวอลเปเปอร์
<install-in-user-type package="com.android.example"> <install-in user-type="FULL" /> </install-in-user-type>
- แพ็กเกจระบบบางรายการจำเป็นต้องมีสำหรับผู้ใช้ทุกคนจริงๆ ไม่ว่า
ประเภท ในกรณีเหล่านี้ ให้ใช้
<install-in-user-type package="com.android.example"> <install-in user-type="SYSTEM"> <install-in user-type="FULL" /> <install-in user-type="PROFILE" /> </install-in-user-type>
- คุณสามารถใช้ตัวเลือกที่ละเอียดยิ่งขึ้นได้โดยระบุผู้ใช้แต่ละราย
ประเภทต่างๆ ตัวอย่างเช่น โค้ดตัวอย่างต่อไปนี้จะติดตั้งแพ็กเกจนี้ในผู้ใช้ที่มีประเภทผู้ใช้เป็นโปรไฟล์ที่มีการจัดการหรือผู้ที่ไม่ได้ลงชื่อเข้าใช้ หรือเป็นประเภท
SYSTEM
base<install-in-user-type package="com.android.example"> <install-in user-type="android.os.usertype.profile.MANAGED" /> <install-in user-type="android.os.usertype.full.GUEST" /> <install-in user-type="SYSTEM"> </install-in-user-type>
แท็ก do-not-install-in
นอกจากนี้ คุณยังป้องกันไม่ให้ระบบติดตั้งแพ็กเกจล่วงหน้าในผู้ใช้บางประเภทได้โดยใช้แท็ก do-not-install-in
โปรดทราบว่าdo-not-install-in
แท็กจะลบล้างแท็ก install-in
ในไฟล์ใดก็ได้ เช่น
<install-in-user-type package="com.android.example"> <install-in user-type="FULL" /> <do-not-install-in user-type="android.os.usertype.full.GUEST"/> </install-in-user-type>
android.os.usertype.full.GUEST
(ประเภทย่อยของ FULL) ระบบจะไม่ติดตั้งแพ็กเกจนี้เนื่องจากแท็ก do-not-install-in
มีลําดับความสําคัญเหนือกว่า install-in
ควบคุมลักษณะการทำงานด้วย config.xml
ค่าทรัพยากรการกําหนดค่า config_userTypePackageWhitelistMode
จะควบคุมฟีเจอร์นี้และกำหนดวิธีที่อุปกรณ์ตีความแพ็กเกจระบบที่ไม่มีรายการสำหรับผู้ใช้ประเภทใดก็ตาม สำหรับข้อมูลเพิ่มเติม โปรดดู
frameworks/base/core/res/res/values/config.xml#config_userTypePackageWhitelistMode
ใน frameworks/base/core/res/res/values/config.xml
ให้กำหนดจำนวนเต็ม
ตั้งชื่อ config_userTypePackageWhitelistMode
เป็นชุดค่าผสมของ
ค่าต่อไปนี้ แฟล็กเหล่านี้รวมเข้าด้วยกันได้ Flag ที่สำคัญที่สุดมีดังนี้
ค่า | คำอธิบาย |
---|---|
0 (0b0000) |
ปิดใช้ ติดตั้งแพ็กเกจระบบทั้งหมด |
1 (0b0001) |
บังคับใช้ ติดตั้งเฉพาะแพ็กเกจระบบเมื่ออยู่ในรายการที่อนุญาต |
4 (0b0100) |
ถือว่าแพ็กเกจที่ไม่ได้กล่าวถึงในไฟล์รายการที่อนุญาตอยู่ในรายการที่อนุญาตโดยนัย |
8 (0b1000) |
เกี่ยวกับแพ็กเกจใดๆ ที่ไม่ได้ระบุไว้ในไฟล์รายการที่อนุญาตว่าเป็นรายการที่อนุญาตโดยปริยาย สำหรับผู้ใช้ SYSTEM เท่านั้น |
การกำหนดค่าต่อไปนี้จะเปิดใช้ฟีเจอร์ (เพื่อให้ install-in
และ
ทำตามแท็ก do-not-install-in
รายการ) แต่ดำเนินการกับแท็กทั้งหมดที่ไม่ได้พูดถึง
แพ็กเกจระบบเสมือนเป็น install-in
สำหรับผู้ใช้ทุกคน
<integer name="config_userTypePackageWhitelistMode">5</integer>