หน้านี้แสดงภาพรวมของ API, ฟีเจอร์ และลักษณะการทำงานของ API สำหรับองค์กร ที่มีใน Android 9
อินเทอร์เฟซผู้ใช้ของโปรไฟล์งาน
Android 9 (API ระดับ 28) มีการเปลี่ยนแปลงอินเทอร์เฟซผู้ใช้ในค่าเริ่มต้น Launcher เพื่อช่วยผู้ใช้แยกแอปส่วนตัวและแอปงาน ผู้ผลิตอุปกรณ์ ที่สนับสนุนสิ่งนี้สามารถนำเสนอ แอปในแท็บงานและแท็บส่วนตัวแยกกัน นอกจากนี้เรายังช่วยให้ผู้ใช้อุปกรณ์เปิดและปิดโปรไฟล์งานได้ง่ายขึ้นโดย รวมถึงสวิตช์ในแท็บงานของ Launcher
![](https://developer.android.google.cn/static/images/about/versions/pie/p-work-profile.jpg?authuser=19&hl=th)
Android 9 จะมีสิ่งต่อไปนี้เมื่อจัดสรรโปรไฟล์งานและอุปกรณ์ที่มีการจัดการ ภาพเคลื่อนไหวเพื่อช่วยให้ผู้ใช้อุปกรณ์เข้าใจฟีเจอร์เหล่านี้
สลับแอประหว่างโปรไฟล์
Android 9 มี API เพื่อเปิดใช้อินสแตนซ์อื่นของแอปใน
เพื่อช่วยให้ผู้ใช้สลับใช้บัญชีต่างๆ ได้ ตัวอย่างเช่น แอปอีเมลสามารถ
มี UI ที่ช่วยให้ผู้ใช้สลับระหว่างโปรไฟล์ส่วนตัวกับโปรไฟล์งานได้
เพื่อเข้าถึงบัญชีอีเมลสองบัญชี แอปทั้งหมดสามารถเรียก API เหล่านี้เพื่อเปิดใช้งานฟังก์ชัน
กิจกรรมหลักของแอปเดียวกัน หากได้ติดตั้งไว้ในโปรไฟล์อื่นแล้ว ถึง
เพิ่มการสลับบัญชีข้ามโปรไฟล์ไปยังแอปของคุณ ทำตามขั้นตอนด้านล่างในการโทร
ของ
ชั้นเรียน CrossProfileApps
:
- โทรหา
getTargetUserProfiles()
เพื่อขอรายการของ ที่คุณสามารถเปิดใช้งานอินสแตนซ์อื่นของแอปได้ วิธีการนี้จะตรวจสอบว่า ติดตั้งแอปในโปรไฟล์แล้ว - โทร
getProfileSwitchingIconDrawable()
เพื่อรับไอคอนที่ใช้แสดงโปรไฟล์อื่นได้ - โทรหา
getProfileSwitchingLabel()
เพื่อรับ ข้อความที่แปลแล้วที่แจ้งให้ผู้ใช้เปลี่ยนโปรไฟล์ - เรียกใช้
startMainActivity()
เพื่อเปิดตัวอินสแตนซ์ แอปของคุณในโปรไฟล์อื่น
ตรวจสอบว่ากิจกรรมหลักที่คุณต้องการเปิดประกาศไว้ในแท็ก
ไฟล์ Manifest ที่มีการดำเนินการ Intent ACTION_MAIN
และรวมถึง
หมวดหมู่ Intent ของ CATEGORY_LAUNCHER
เปิดหรือปิดโปรไฟล์งานแบบเป็นโปรแกรม
Launcher เริ่มต้น (หรือแอปที่มีสิทธิ์MANAGE_USERS
หรือ
MODIFY_QUIET_MODE
) สามารถเปิดหรือปิดโปรไฟล์งานโดยการโทร
UserManager.requestQuietModeEnabled()
คุณสามารถ
ตรวจสอบค่าผลลัพธ์เพื่อดูว่าผู้ใช้ต้องยืนยันหรือไม่
ข้อมูลเข้าสู่ระบบก่อนเปลี่ยนสถานะ เนื่องจากการเปลี่ยนแปลงอาจไม่เกิดขึ้น
ให้ฟังได้ทันที
ACTION_MANAGED_PROFILE_AVAILABLE
หรือ
ACTION_MANAGED_PROFILE_UNAVAILABLE
ออกอากาศเพื่อให้ทราบว่าต้องอัปเดตอินเทอร์เฟซผู้ใช้เมื่อใด
แอปของคุณสามารถตรวจสอบสถานะของโปรไฟล์งานได้โดยการโทร
UserManager.isQuietModeEnabled()
ล็อกแอปทุกแอปไว้ในอุปกรณ์
เริ่มตั้งแต่ Android 9 เจ้าของอุปกรณ์และเจ้าของโปรไฟล์ (ของผู้ใช้รอง) สามารถล็อกแอปใดก็ได้ไว้ที่หน้าจอของอุปกรณ์โดยการทำให้แอปเข้าสู่โหมดล็อกงาน ก่อนหน้านี้นักพัฒนาแอปต้องเพิ่มการรองรับงานการล็อก ในแอปของตนได้ Android 9 ขยายงานการล็อกด้วย API ไปยังเจ้าของโปรไฟล์ของผู้ใช้รองที่ไม่ใช่แอฟฟิลิเอต โดยทำตามขั้นตอนด้านล่างนี้ เพื่อล็อกแอปไว้ที่หน้าจอ ให้ทำดังนี้
- โทรหา
DevicePolicyManager.setLockTaskPackages()
ถึง อนุญาตแอปสำหรับโหมดล็อกงาน - โทร
ActivityOptions.setLockTaskEnabled()
เพื่อเปิด แอปที่อยู่ในรายการที่อนุญาตให้เข้าสู่โหมดล็อกงาน
หากต้องการหยุดแอปในโหมดล็อกงาน ให้นำแอปออกจากโหมดล็อกงาน
รายการที่อนุญาตโดยใช้
DevicePolicyManager.setLockTaskPackages()
เปิดใช้ฟีเจอร์ UI ของระบบ
เมื่อเปิดใช้โหมดล็อกงาน เจ้าของอุปกรณ์และเจ้าของโปรไฟล์จะเปิดใช้ได้
ฟีเจอร์ UI ของระบบบางอย่างในอุปกรณ์โดยการเรียกใช้
DevicePolicyManager.setLockTaskFeatures()
และผ่านการตรวจสอบ
ของฟิลด์บิตของแฟล็กฟีเจอร์ต่อไปนี้
LOCK_TASK_FEATURE_NONE
LOCK_TASK_FEATURE_SYSTEM_INFO
LOCK_TASK_FEATURE_HOME
LOCK_TASK_FEATURE_NOTIFICATIONS
สามารถใช้ร่วมกับLOCK_TASK_FEATURE_HOME
เท่านั้นLOCK_TASK_FEATURE_KEYGUARD
LOCK_TASK_FEATURE_OVERVIEW
สามารถใช้ร่วมกับLOCK_TASK_FEATURE_HOME
เท่านั้นLOCK_TASK_FEATURE_GLOBAL_ACTIONS
คุณสามารถโทรหา DevicePolicyManager.getLockTaskFeatures()
เพื่อรับรายการฟีเจอร์ที่พร้อมใช้งานในอุปกรณ์เมื่อโหมดล็อกงาน
เปิดอยู่ เมื่ออุปกรณ์ออกจากโหมดงานล็อก อุปกรณ์จะกลับสู่สถานะที่คำสั่ง
นโยบายด้านอุปกรณ์อื่นๆ
ระงับกล่องโต้ตอบข้อผิดพลาด
ในบางสภาพแวดล้อม เช่น การสาธิตในร้านค้าปลีกหรือข้อมูลสาธารณะ
คุณอาจไม่ต้องการแสดงกล่องโต้ตอบข้อผิดพลาดต่อผู้ใช้ นโยบายด้านอุปกรณ์
ตัวควบคุม (DPC) สามารถระงับกล่องโต้ตอบข้อผิดพลาดของระบบสำหรับข้อขัดข้องหรือไม่ตอบสนอง
ด้วยการเพิ่ม
ผู้ใช้ DISALLOW_SYSTEM_ERROR_DIALOGS
ข้อจำกัด ข้อจำกัดนี้จะมีผลต่อกล่องโต้ตอบทั้งหมดเมื่อเจ้าของอุปกรณ์นำไปใช้
แต่ระบบจะระงับเฉพาะกล่องโต้ตอบข้อผิดพลาดที่แสดงในผู้ใช้หลักหรือผู้ใช้รองเท่านั้น
เมื่อเจ้าของโปรไฟล์ใช้การจำกัด ข้อจำกัดนี้
มีผลต่อโปรไฟล์งาน
ใน Android 9 แอปที่ทำงานในโหมดเต็มหน้าจอที่สมจริง โหมดไม่แสดงลูกโป่งการช่วยเตือนเมื่ออยู่ใน โหมดล็อกงาน ลูกโป่งการช่วยเตือนคือแผงที่แสดงให้ผู้ใช้เห็น (เมื่อเปิดใช้ครั้งแรก) ที่อธิบายวิธีออกจากโหมดใหญ่พิเศษ
รองรับผู้ใช้หลายคนในอุปกรณ์เฉพาะ
Android 9 มีแนวคิดสำหรับผู้ใช้ชั่วคราวเพื่อ (ก่อนหน้านี้เรียกว่าอุปกรณ์ COSU) ผู้ใช้ชั่วคราวคือ ผู้ใช้ระยะสั้นมีไว้สำหรับกรณีที่ผู้ใช้หลายคนใช้ อุปกรณ์เฉพาะ ซึ่งรวมถึงเซสชันของผู้ใช้แบบสาธารณะในอุปกรณ์ เช่น ไลบรารี ตู้เช็คอินหรือโรงแรม รวมถึงเซสชันถาวรระหว่าง กลุ่มผู้ใช้ในอุปกรณ์ เช่น กะผู้ปฏิบัติงาน
คุณควรสร้างผู้ใช้ชั่วคราวในเบื้องหลัง โดยจะสร้างเป็น ผู้ใช้รองในอุปกรณ์และจะถูกนำออก (รวมถึงแอปที่เกี่ยวข้องและ ) เมื่อหยุดทำงาน สลับอยู่ หรืออุปกรณ์รีบูต วิธีสร้าง ผู้ใช้ชั่วคราว เจ้าของอุปกรณ์สามารถทำสิ่งต่อไปนี้ได้
- ตั้งค่าสถานะ
MAKE_USER_EPHEMERAL
เมื่อโทรDevicePolicyManager.createAndManageUser()
- โทร
DevicePolicyManager.startUserInBackground()
เพื่อเริ่มใช้งานผู้ใช้ชั่วคราวในเบื้องหลัง
โปรดทราบว่าแอปที่กำหนดเป้าหมายเป็น Android 9 ควรดักจับ
UserManager.UserOperationException
เมื่อโทร
createAndManageUser()
เรียกใช้
getUserOperationResult()
เพื่อหาสาเหตุ
ไม่มีการสร้างผู้ใช้
รับการแจ้งเตือนกิจกรรม
DeviceAdminReceiver
ได้รับการแจ้งเตือนสำหรับ
กิจกรรมต่อไปนี้:
onUserStarted()
: โทรเมื่อผู้ใช้เริ่มทำงานonUserSwitched()
: เรียกใช้เมื่อเปลี่ยนผู้ใช้ เสร็จสมบูรณ์แล้วonUserStopped()
: โทรพร้อมกับonUserRemoved()
เมื่อผู้ใช้หยุดหรือบันทึก
แสดงข้อความเหตุการณ์แก่ผู้ใช้
เจ้าของอุปกรณ์สามารถกำหนดค่าข้อความที่แสดงต่อผู้ใช้เมื่อผู้ใช้ เริ่มต้นและสิ้นสุดเซสชัน:
- ใช้
DevicePolicyManager.setStartUserSessionMessage()
เพื่อตั้งค่าข้อความที่แสดงต่อผู้ใช้เมื่อเซสชันของผู้ใช้เริ่มต้น ถึง เรียกข้อความ, โทรDevicePolicyManager.getStartUserSessionMessage()
- ใช้
DevicePolicyManager.setEndUserSessionMessage()
เพื่อตั้งค่าข้อความที่แสดงต่อผู้ใช้เมื่อเซสชันของผู้ใช้สิ้นสุดลง ถึง เรียกข้อความ, โทรDevicePolicyManager.getEndUserSessionMessage()
ออกจากระบบและหยุดผู้ใช้
เจ้าของอุปกรณ์ใช้ได้
DevicePolicyManager.setLogoutEnabled()
เพื่อระบุว่า
เปิดใช้การออกจากระบบสำหรับผู้ใช้รอง หากต้องการตรวจสอบว่าการออกจากระบบเปิดอยู่หรือไม่ ให้โทร
DevicePolicyManager.isLogoutEnabled()
เจ้าของโปรไฟล์ของผู้ใช้รองสามารถโทรหา
DevicePolicyManager.logoutUser()
เพื่อหยุดผู้ใช้รองและ
สลับกลับไปเป็นผู้ใช้หลัก
เจ้าของอุปกรณ์สามารถใช้ DevicePolicyManager.stopUser()
เพื่อหยุด
ผู้ใช้รองที่ระบุ
การแคชแพ็กเกจ
หากต้องการปรับปรุงการจัดสรรผู้ใช้ในอุปกรณ์ที่แชร์กับผู้ใช้ตามกลุ่มแบบคงที่ เช่น อุปกรณ์สำหรับผู้ปฏิบัติงานเป็นกะ คุณสามารถแคชพัสดุที่ ที่จำเป็นสำหรับเซสชันที่มีผู้ใช้หลายคน:
โทร
DevicePolicyManager.setKeepUninstalledPackages()
เพื่อระบุรายการแพ็กเกจที่จะเก็บไว้เป็น APK หากต้องการเรียกข้อมูลรายการ แพ็กเกจ, โทรDevicePolicyManager.getKeepUninstalledPackages()
โทร
DevicePolicyManager.installExistingPackage()
เพื่อติดตั้งแพ็กเกจที่เก็บไว้หลังจากที่นำออกผ่านsetKeepUninstalledPackages()
วิธีการและค่าคงที่เพิ่มเติม
Android 9 ยังมีวิธีการและค่าคงที่ต่อไปนี้เพื่อการสนับสนุนเพิ่มเติม เซสชันของผู้ใช้ในอุปกรณ์ที่แชร์:
DevicePolicyManager.getSecondaryUsers()
รับรายการ ผู้ใช้รองทั้งหมดในอุปกรณ์DISALLOW_USER_SWITCH
เป็นข้อจำกัดสำหรับผู้ใช้ที่คุณสามารถ เปิดใช้โดยการโทรDevicePolicyManager.addUserRestriction()
เพื่อบล็อกไม่ให้ผู้ใช้เปลี่ยนLEAVE_ALL_SYSTEM_APPS_ENABLED
เป็นแฟล็ก พร้อมใช้งานสำหรับDevicePolicyManager.createAndManageUser()
เมื่อตั้งค่าแล้ว ไม่มีการปิดใช้แอประบบในระหว่างการจัดสรรผู้ใช้UserManager.UserOperationException
โยนโดยDevicePolicyManager.createAndManageUser()
เมื่อระบบสร้างผู้ใช้ไม่ได้ ค่า ข้อยกเว้นจะมีเหตุผลของความล้มเหลว
ล้างข้อมูลแพ็กเกจและนำบัญชีออก
เจ้าของอุปกรณ์และเจ้าของโปรไฟล์สามารถโทรหาได้
clearApplicationUserData()
เพื่อล้างข้อมูลผู้ใช้
สำหรับแพ็กเกจหนึ่งๆ วิธีนำบัญชีออกจาก
AccountManager
เจ้าของอุปกรณ์และโปรไฟล์สามารถโทรหาได้
removeAccount()
การจำกัดผู้ใช้และการควบคุมการตั้งค่าที่มากขึ้น
Android 9 เปิดตัวชุดข้อจำกัดสำหรับผู้ใช้สำหรับ DPC รวมถึง ความสามารถในการกำหนดค่า APN, เวลาและเขตเวลา และการตั้งค่าระบบในอุปกรณ์
กำหนดค่า APN
เจ้าของอุปกรณ์สามารถใช้วิธีการต่อไปนี้ใน
DevicePolicyManager
ที่จะกำหนดค่า APN ใน
อุปกรณ์:
addOverrideApn()
updateOverrideApn()
removeOverrideApn()
getOverrideApns()
setOverrideApnEnabled()
isOverrideApnEnabled()
กำหนดค่าเวลาและเขตเวลา
เจ้าของอุปกรณ์สามารถใช้วิธีการต่อไปนี้ใน
คลาส DevicePolicyManager
เพื่อตั้งเวลาและเขตเวลา
บนอุปกรณ์
บังคับใช้การจำกัดผู้ใช้กับการตั้งค่าที่สำคัญ
Android 9 เพิ่มข้อจำกัดของผู้ใช้เพื่อปิดใช้ฟีเจอร์และการตั้งค่าของระบบ ถึง
เพิ่มข้อจำกัด โทร
DevicePolicyManager.addUserRestriction()
ที่มีหนึ่งใน
ค่าคงที่ UserManager
ต่อไปนี้
DISALLOW_AIRPLANE_MODE
DISALLOW_AMBIENT_DISPLAY
DISALLOW_CONFIG_BRIGHTNESS
DISALLOW_CONFIG_DATE_TIME
DISALLOW_CONFIG_LOCATION
DISALLOW_CONFIG_SCREEN_TIMEOUT
DISALLOW_PRINTING
หากเป็น DISALLOW_CONFIG_BRIGHTNESS
และ
บังคับใช้ DISALLOW_CONFIG_SCREEN_TIMEOUT
แล้ว
ในอุปกรณ์ เจ้าของอุปกรณ์ยังคงสามารถตั้งค่าหน้าจอได้
ความสว่าง, ความสว่างของหน้าจอ
โหมด และการตั้งค่าระยะหมดเวลาหน้าจอ
บนอุปกรณ์โดยใช้ API
DevicePolicyManager.setSystemSetting()
ข้อมูลที่มีการวัดปริมาณอินเทอร์เน็ต
เจ้าของอุปกรณ์และเจ้าของโปรไฟล์สามารถป้องกันไม่ให้แอปใช้อุปกรณ์
เครือข่ายข้อมูลแบบจำกัดปริมาณ ระบบจะถือว่าเครือข่ายมีการวัดปริมาณอินเทอร์เน็ตเมื่อผู้ใช้อยู่
ไวต่อปริมาณการใช้อินเทอร์เน็ตปริมาณมากเนื่องจากค่าใช้จ่าย ขีดจำกัดของข้อมูล หรือแบตเตอรี่และ
ปัญหาด้านประสิทธิภาพ หากต้องการป้องกันไม่ให้แอปใช้เครือข่ายแบบจำกัดปริมาณ โปรดโทร
DevicePolicyManager.setMeteredDataDisabledPackages()
การส่งรายการชื่อแพ็กเกจ หากต้องการเรียกดูแอปที่ถูกจำกัดในปัจจุบัน ให้โทร
DevicePolicyManager.getMeteredDataDisabledPackages()
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับข้อมูลแบบจำกัดปริมาณใน Android โปรดอ่านการเพิ่มประสิทธิภาพข้อมูลเครือข่าย การใช้งาน
ย้ายข้อมูล DPC
เครื่องมือควบคุมนโยบายด้านอุปกรณ์ (DPC) สามารถโอนการเป็นเจ้าของอุปกรณ์หรือ โปรไฟล์งานไปยัง DPC อื่น คุณอาจโอนการเป็นเจ้าของเพื่อย้ายฟีเจอร์บางอย่าง ในส่วนการจัดการอุปกรณ์ Android API เพื่อย้ายอุปกรณ์จาก DPC เดิมหรือเพื่อช่วยผู้ดูแลระบบไอทีย้ายข้อมูลไปยัง EMM เพราะคุณเพิ่ง กำลังเปลี่ยนความเป็นเจ้าของ DPC คุณไม่สามารถใช้ฟีเจอร์นี้เพื่อเปลี่ยนประเภทของ การจัดการ เช่น การย้ายข้อมูลจากอุปกรณ์ที่มีการจัดการไปยังโปรไฟล์งาน หรือ หรือในทางกลับกันก็ได้
คุณสามารถใช้ทรัพยากร XML ของนโยบายผู้ดูแลระบบอุปกรณ์เพื่อ
ระบุว่า DPC เวอร์ชันนี้รองรับการย้ายข้อมูล DPC เป้าหมาย
ระบุว่าสามารถรับการเป็นเจ้าของได้โดยการเพิ่มองค์ประกอบที่ชื่อว่า
<support-transfer-ownership>
ตัวอย่างด้านล่างแสดงวิธีดำเนินการใน
ไฟล์ XML ผู้ดูแลอุปกรณ์ของ DPC
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<support-transfer-ownership />
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
</uses-policies>
</device-admin>
DPC ที่ต้องการย้ายข้อมูลการเป็นเจ้าของไปยังแอป DPC ใหม่สามารถตรวจสอบว่า DPC เป้าหมาย
เวอร์ชันรองรับการย้ายข้อมูลโดยเรียกใช้เมธอด DeviceAdminInfo
supportsTransferOwnership()
ก่อนโอน
เป็นความรับผิดชอบของ DPC ต้นทางในการตรวจสอบ DPC เป้าหมายโดย
ที่เปรียบเทียบลายเซ็นของแอป ชั้นเรียน PackageManager
ประกอบด้วย
วิธีทำงานกับลายเซ็นแบบโค้ด
Android ดูแลรักษาระบบและนโยบายผู้ใช้ของ DPC ต้นทางผ่านการเป็นเจ้าของ
การโอน - DPC ไม่จำเป็นต้องย้ายข้อมูล DPC ต้นทางสามารถส่งต่อข้อมูลที่กำหนดเองไปยัง
DPC เป้าหมายโดยใช้คู่คีย์-ค่าใน PersistableBundle
หลังจาก
DPC เป้าหมายสามารถเรียกดูข้อมูลนี้โดยการเรียกใช้
DevicePolicyManager.getTransferOwnershipBundle()
ขั้นตอนในการโอนการเป็นเจ้าของอุปกรณ์ที่มีการจัดการหรือโปรไฟล์งานมีดังนี้ เหมือนกัน:
- DPC ต้นทางจะตรวจสอบว่าเวอร์ชันของ DPC เป้าหมายรองรับการย้ายข้อมูลและ ยืนยันว่าลายเซ็นแอปของ DPC เป้าหมายตรงกับค่าที่คาดไว้
- DPC ต้นทางเรียกใช้
transferOwnership()
เพื่อเริ่มต้น การโอน - ระบบจะกำหนดให้ DPC เป้าหมายเป็นผู้ดูแลระบบที่ใช้งานอยู่และชุด อุปกรณ์ที่มีการจัดการหรือโปรไฟล์งาน
- DPC เป้าหมายได้รับการติดต่อกลับ
onTransferOwnershipComplete()
และสามารถกำหนดค่า โดยใช้ค่าจากอาร์กิวเมนต์bundle
- หากเกิดข้อผิดพลาดในการโอน ระบบจะเปลี่ยนการเป็นเจ้าของเป็น
DPC ต้นทาง หาก DPC ต้นทางต้องยืนยันว่าการโอนการเป็นเจ้าของ
สำเร็จ โทรติดต่อ
isAdminActive()
เพื่อตรวจสอบว่า DPC ต้นทาง ไม่ได้เป็นผู้ดูแลระบบที่ใช้งานอยู่อีกต่อไป
แอปทั้งหมดที่เรียกใช้ในโปรไฟล์งานจะได้รับ
ACTION_PROFILE_OWNER_CHANGED
ประกาศเมื่อ
เจ้าของโปรไฟล์ก็เปลี่ยน แอปที่ทำงานในอุปกรณ์ที่มีการจัดการจะได้รับ
ACTION_DEVICE_OWNER_CHANGED
ประกาศเมื่อ
การเปลี่ยนแปลงเจ้าของอุปกรณ์
โปรไฟล์งานในอุปกรณ์ที่มีการจัดการเต็มรูปแบบ
การโอน DPC 2 อินสแตนซ์ที่ทำหน้าที่เป็นเจ้าของอุปกรณ์และเจ้าของโปรไฟล์ จะเกิดขึ้นใน 2 ขั้นตอน เมื่อโปรไฟล์ส่วนตัวและโปรไฟล์งาน เป็นพาร์ทเนอร์ ให้ดำเนินการโอนตามลำดับต่อไปนี้
- ก่อนอื่นให้โอนการเป็นเจ้าของโปรไฟล์งาน
- รอการโทรกลับของ
DeviceAdminReceiver
onTransferAffiliatedProfileOwnershipComplete()
เพื่อยืนยันว่าโปรไฟล์งานโอนไปยัง DPC เป้าหมายแล้ว - ขั้นตอนสุดท้าย ให้โอนการเป็นเจ้าของอุปกรณ์ที่มีการจัดการไปยัง DPC เป้าหมาย
เลื่อนการอัปเดตผ่านอากาศ (OTA)
เจ้าของอุปกรณ์สามารถเลื่อนการอัปเดตระบบ OTA ไปยังอุปกรณ์ได้สูงสุด 90 วันเพื่อ ทำให้เวอร์ชันของระบบปฏิบัติการที่ทำงานในอุปกรณ์เหล่านี้ค้างในช่วงเวลาสำคัญ (เช่น วันหยุด) ระบบจะบังคับใช้บัฟเฟอร์ 60 วันหลังจากที่กำหนด ระยะเวลาหยุดทำงานเพื่อป้องกันการตรึงอุปกรณ์โดยไม่มีกำหนด
ระหว่างช่วงหยุดทำงาน:
- อุปกรณ์จะไม่ได้รับการแจ้งเตือนใดๆ เกี่ยวกับการอัปเดต OTA ที่รอดำเนินการ
- อุปกรณ์จะไม่ติดตั้งการอัปเดต OTA ในระบบปฏิบัติการ
- ผู้ใช้อุปกรณ์ไม่สามารถตรวจหาการอัปเดต OTA ในการตั้งค่าด้วยตนเองได้
หากต้องการกำหนดช่วงหยุดทำงาน โปรดโทร
SystemUpdatePolicy.setFreezePeriods()
เพราะการที่จุดค้าง
เกิดซ้ำทุกปี โดยจะแสดงวันที่เริ่มต้นและวันที่สิ้นสุดของช่วงเวลา
ด้วยจำนวนเต็มนับจำนวนวันนับตั้งแต่เริ่มต้นปี วันที่เริ่มต้นต้อง
เริ่มต้นอย่างน้อย 60 วันหลังจากสิ้นสุดช่วงหยุดทำงานก่อนหน้านี้ อุปกรณ์
เจ้าของสามารถโทรหา SystemUpdatePolicy.getFreezePeriods()
เพื่อ
รับรายการช่วงหยุดทำงานที่ตั้งค่าไว้ก่อนหน้านี้ในออบเจ็กต์นโยบายการอัปเดตระบบ
DevicePolicyManager.getSystemUpdatePolicy()
ได้รับการ
อัปเดตเพื่อแสดงช่วงหยุดทำงานที่เจ้าของอุปกรณ์กำหนดไว้
จำกัดการแชร์ไปยังโปรไฟล์งาน
เจ้าของโปรไฟล์ป้องกันไม่ให้ผู้ใช้แชร์ข้อมูลส่วนตัวไปยังโปรไฟล์งานได้
ในอุปกรณ์โดยเพิ่มการจำกัดผู้ใช้
DISALLOW_SHARE_INTO_MANAGED_PROFILE
ข้อจำกัดนี้จะป้องกันการจัดการและการแชร์ Intent ต่อไปนี้
- แอปโปรไฟล์ส่วนตัวที่แชร์ข้อมูลและไฟล์กับแอปในโปรไฟล์งาน
- แอปโปรไฟล์งานที่เลือกรายการจากโปรไฟล์ส่วนตัว เช่น ภาพหรือไฟล์
หลังจากตั้งค่าข้อจำกัดนี้ DPC ของคุณจะยังคงอนุญาตกิจกรรมข้ามโปรไฟล์ได้
Intent ด้วยการโทร
addCrossProfileIntentFilter()
คีย์ที่ปลอดภัยด้วยฮาร์ดแวร์และใบรับรองของเครื่อง
Android 9 เพิ่ม API เพื่อช่วยให้คุณทำงานกับคีย์และใบรับรองที่ทำสิ่งต่อไปนี้ได้ รวมเข้าด้วยกันเพื่อระบุอุปกรณ์อย่างปลอดภัย DPC ที่ทำงานอยู่ในเจ้าของโปรไฟล์หรืออุปกรณ์ โหมดเจ้าของ หรือโปรแกรมติดตั้งใบรับรองที่ได้รับมอบสิทธิ์ ทำงานต่อไปนี้ให้เสร็จ
- สร้างคีย์และใบรับรองในฮาร์ดแวร์ที่ปลอดภัย (เช่น
สภาพแวดล้อมการดำเนินการ (TEE) หรือองค์ประกอบความปลอดภัย (SE)) ของอุปกรณ์ Android
คีย์ที่สร้างขึ้นจะไม่หายไปจากฮาร์ดแวร์ที่ปลอดภัย และสามารถใช้ได้จาก
KeyChain โทร
DevicePolicyManager.generateKeyPair()
ซึ่งจัดหา อัลกอริทึม (ดูKeyPairGenerator
) และรหัสฮาร์ดแวร์ที่คุณ ต้องการเอกสารรับรอง เช่น หมายเลขซีเรียลหรือ IMEI หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับความปลอดภัย การเปลี่ยนแปลงฮาร์ดแวร์ โปรดดูความปลอดภัยของ Android 9 การเพิ่มประสิทธิภาพ - เชื่อมโยงใบรับรองกับคีย์ที่มีอยู่ซึ่งอุปกรณ์สร้างขึ้น โทร
กำลังจัดหา
DevicePolicyManager.setKeyPairCertificate()
ชื่อแทนของคีย์ที่มีอยู่และเชนใบรับรอง เริ่มต้นจาก Leaf และรวมถึงชุดของความน่าเชื่อถือตามลำดับ - ตรวจสอบว่าฮาร์ดแวร์ที่ปลอดภัยปกป้องคีย์ก่อนใช้งาน หากต้องการตรวจสอบ กลไกใดที่ปกป้องคีย์ ให้ทำตามขั้นตอนในคีย์ เอกสารรับรอง
- เจ้าของอุปกรณ์และผู้ติดตั้งใบรับรองที่ได้รับมอบสิทธิ์จะได้รับใบรับรองที่ลงชื่อ
ข้อความของอุปกรณ์ รหัสฮาร์ดแวร์ที่มีเวอร์ชันของระบบ Android โทร
DevicePolicyManager.generateKeyPair()
ส่งอย่างน้อย 1 รายการ จากID_TYPE_BASE_INFO
,ID_TYPE_SERIAL
ID_TYPE_IMEI
หรือID_TYPE_MEID
ในidAttestationFlags
อาร์กิวเมนต์ ใบรับรองที่ส่งคืนประกอบด้วยฮาร์ดแวร์ รหัสในระเบียนเอกสารรับรอง หากไม่ต้องการรวมรหัสฮาร์ดแวร์ด้วย ให้ส่ง0
เจ้าของโปรไฟล์จะรับข้อมูลผู้ผลิตได้เท่านั้น (โดยการส่งID_TYPE_BASE_INFO
) หากต้องการตรวจสอบว่าอุปกรณ์ยืนยันรหัสได้ ให้โทรisDeviceIdAttestationSupported()
- ป้องกันไม่ให้ผู้ใช้อุปกรณ์ใช้รหัสขององค์กรในทางที่ผิด (ในงานที่ไม่ใช่ขององค์กร)
โดยทำให้เลือกใบรับรองคีย์ไม่ได้ ระบบจะไม่รวม
ใบรับรองที่ไม่ได้เลือกในแผงเครื่องมือเลือก ใน
DeviceAdminReceiver.onChoosePrivateKeyAlias()
Callback ให้แสดงผลชื่อแทนเป็นคีย์ขององค์กรเพื่อให้ระบบ จะเลือกใบรับรองโดยอัตโนมัติในนามของผู้ใช้ วิธีสร้างคีย์ ไม่สามารถเลือกได้ ให้เรียกเมธอดDevicePolicyManager
ต่อไปนี้:setKeyPairCertificate()
และ ส่งผ่านfalse
สำหรับอาร์กิวเมนต์isUserSelectable
installKeyPair (ComponentName, PrivateKey, Certificate[], String, int)
และละเว้นINSTALLKEY_SET_USER_SELECTABLE
จาก อาร์กิวเมนต์flags
การรวม API เหล่านี้เข้าด้วยกันจะทำให้องค์กรระบุอุปกรณ์และยืนยันได้อย่างปลอดภัย ความซื่อสัตย์ของผู้ใช้ก่อนที่จะให้สิทธิ์เข้าถึง
- อุปกรณ์ Android จะสร้างคีย์ส่วนตัวใหม่ในฮาร์ดแวร์ที่ปลอดภัย เนื่องจากคีย์ส่วนตัวจะไม่ออกไปจากฮาร์ดแวร์ที่ปลอดภัย จึงยังคงเป็นความลับ
- อุปกรณ์ใช้คีย์เพื่อสร้างและส่งคำขอลงชื่อใบรับรอง (CSR) ไปยังเซิร์ฟเวอร์ CSR ประกอบด้วยบันทึกเอกสารรับรองที่มี รหัสอุปกรณ์
- เซิร์ฟเวอร์จะตรวจสอบกลุ่มใบรับรอง (รูทไปจนถึงใบรับรองของ Google) และดึงข้อมูลเมตาของอุปกรณ์จากระเบียนเอกสารรับรอง
- เซิร์ฟเวอร์จะยืนยันว่าฮาร์ดแวร์ที่ปลอดภัยจะปกป้องคีย์ส่วนตัวและ ว่ารหัสอุปกรณ์ตรงกับระเบียนขององค์กร เซิร์ฟเวอร์ยังตรวจสอบ ว่าระบบ Android และเวอร์ชันแพตช์ตรงตามข้อกำหนดทั้งหมดหรือไม่
- เซิร์ฟเวอร์จะสร้างใบรับรองจาก CSR และส่งใบรับรองไปที่ อุปกรณ์
- อุปกรณ์จะจับคู่ใบรับรองกับคีย์ส่วนตัว (ซึ่งจะยังอยู่ใน ฮาร์ดแวร์ที่ปลอดภัย) ทำให้แอปเชื่อมต่อกับบริการของระดับองค์กรได้
API, ฟีเจอร์ และการเปลี่ยนแปลงเกี่ยวกับการรักษาความปลอดภัยเพิ่มเติม
รหัสสำหรับบันทึกความปลอดภัยและบันทึกเครือข่าย
Android 9 มีรหัสในบันทึกกิจกรรมความปลอดภัยและเครือข่าย รหัสตัวเลข เหตุการณ์ต่างๆ เพิ่มขึ้นแบบเดี่ยวๆ ทำให้ผู้ดูแลระบบไอทีสังเกตเห็นได้ง่ายขึ้น มีช่องว่างในบันทึก เนื่องจากบันทึกการรักษาความปลอดภัยและบันทึกเครือข่ายอยู่แยกกัน ระบบจะเก็บรักษาค่ารหัสแยกกัน
โทร SecurityEvent.getId()
DnsEvent.getId()
หรือ
ConnectEvent.getId()
เพื่อรับค่ารหัส ระบบ
รีเซ็ตรหัสเมื่อใดก็ตามที่ DPC เปิดใช้การบันทึกหรือเมื่ออุปกรณ์รีสตาร์ท
บันทึกความปลอดภัยที่ดึงข้อมูลโดยการโทร
DevicePolicyManager.retrievePreRebootSecurityLogs()
ไม่รวมรหัสเหล่านี้
การบันทึกความปลอดภัย
การบันทึกการรักษาความปลอดภัยจะกำหนดระดับการบันทึกให้กับ SecurityEvent
หากต้องการดูระดับการบันทึก
โทรหา getLogLevel()
เมธอดนี้จะแสดงค่าระดับการบันทึกที่
อาจเป็น LEVEL_INFO
, LEVEL_WARNING
หรือ
LEVEL_ERROR
Android 9 จะบันทึกเหตุการณ์ที่แสดงอยู่ในตารางด้านล่างความปลอดภัย
บันทึก หากต้องการตรวจสอบแท็กของเหตุการณ์ ให้เรียกใช้ getTag()
ถึง
เรียกดูข้อมูลเหตุการณ์ โทร getData()
ติดแท็ก | คำอธิบายกิจกรรม |
---|---|
TAG_CERT_AUTHORITY_INSTALLED |
มีการพยายามติดตั้งใบรับรองรูทใหม่ลงในที่เก็บข้อมูลเข้าสู่ระบบของระบบ |
TAG_CERT_AUTHORITY_REMOVED |
การพยายามนำใบรับรองรูทออกจากที่เก็บข้อมูลเข้าสู่ระบบของระบบ |
TAG_CERT_VALIDATION_FAILURE |
ใบรับรอง Wi-Fi ไม่ผ่านการตรวจสอบความถูกต้องระหว่างการเชื่อมต่อ |
TAG_CRYPTO_SELF_TEST_COMPLETED |
ระบบทำการทดสอบตนเองด้วยการเข้ารหัสเสร็จแล้ว |
TAG_KEYGUARD_DISABLED_FEATURES_SET |
แอปผู้ดูแลระบบปิดใช้ฟีเจอร์ของอุปกรณ์หรือหน้าจอล็อกของโปรไฟล์งาน |
TAG_KEY_DESTRUCTION |
การพยายามลบคีย์การเข้ารหัส |
TAG_KEY_GENERATED |
การพยายามสร้างคีย์การเข้ารหัสใหม่ |
TAG_KEY_IMPORT |
ความพยายามในการนำเข้าคีย์การเข้ารหัสใหม่ |
TAG_KEY_INTEGRITY_VIOLATION |
Android ตรวจพบคีย์การเข้ารหัสหรือคีย์การตรวจสอบสิทธิ์ที่เสียหาย |
TAG_LOGGING_STARTED |
เริ่มการบันทึกการรักษาความปลอดภัยแล้ว |
TAG_LOGGING_STOPPED |
หยุดการบันทึกการรักษาความปลอดภัยแล้ว |
TAG_LOG_BUFFER_SIZE_CRITICAL |
บัฟเฟอร์บันทึกการรักษาความปลอดภัยใช้พื้นที่ถึงขีดจำกัด 90% แล้ว |
TAG_MAX_PASSWORD_ATTEMPTS_SET |
แอปผู้ดูแลระบบกำหนดจำนวนครั้งที่อนุญาตให้ป้อนรหัสผ่านไม่ถูกต้อง |
TAG_MAX_SCREEN_LOCK_TIMEOUT_SET |
แอปผู้ดูแลระบบตั้งค่าระยะหมดเวลาของการล็อกหน้าจอสูงสุด |
TAG_MEDIA_MOUNT |
สื่อจัดเก็บข้อมูลแบบถอดออกได้ที่ต่อเชื่อมกับอุปกรณ์ |
TAG_MEDIA_UNMOUNT |
สื่อจัดเก็บข้อมูลแบบถอดออกได้ที่ไม่ได้ต่อเชื่อม |
TAG_OS_SHUTDOWN |
ระบบ Android ปิดการทำงาน |
TAG_OS_STARTUP |
ระบบ Android เริ่มทำงาน |
TAG_PASSWORD_COMPLEXITY_SET |
แอปผู้ดูแลระบบตั้งค่าข้อกำหนดด้านความซับซ้อนของรหัสผ่าน |
TAG_PASSWORD_EXPIRATION_SET |
แอปผู้ดูแลระบบกำหนดระยะเวลาหมดอายุของรหัสผ่าน |
TAG_PASSWORD_HISTORY_LENGTH_SET |
แอปผู้ดูแลระบบกำหนดความยาวของประวัติรหัสผ่าน เพื่อป้องกันไม่ให้ผู้ใช้ใช้รหัสผ่านเดิมซ้ำ |
TAG_REMOTE_LOCK |
แอปผู้ดูแลระบบล็อกอุปกรณ์หรือโปรไฟล์งาน |
TAG_USER_RESTRICTION_ADDED |
แอปผู้ดูแลระบบตั้งค่าข้อจำกัดของผู้ใช้ |
TAG_USER_RESTRICTION_REMOVED |
แอปผู้ดูแลระบบนำข้อจำกัดของผู้ใช้ออก |
TAG_WIPE_FAILURE |
พยายามล้างข้อมูลอุปกรณ์หรือโปรไฟล์งานไม่สำเร็จ |
คำถามสำหรับหน้าจอล็อกของโปรไฟล์งาน
เริ่มตั้งแต่ Android 9 เจ้าของโปรไฟล์สามารถกำหนดให้ผู้ใช้ตั้งค่าการล็อกแยกต่างหากได้
สำหรับโปรไฟล์งานโดยใช้
ข้อจำกัดของผู้ใช้ DISALLOW_UNIFIED_PASSWORD
ถึง
ตรวจสอบว่าผู้ใช้ได้ตั้งคำถามสำหรับหน้าจอล็อกในอุปกรณ์ของตนแบบเดียวกันหรือไม่ และ
โปรไฟล์งาน, โทร
DevicePolicyManager.isUsingUnifiedPassword()
หากอุปกรณ์มีหน้าจอล็อกของโปรไฟล์งานแยกต่างหาก
DevicePolicyManager.setMaximumTimeToLock()
ตั้งค่าเฉพาะ
ระยะหมดเวลาหน้าจอล็อกของโปรไฟล์งาน ไม่ใช่ทั้งอุปกรณ์
การเข้าถึงเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์
เครื่องมือ Android Debug Bridge (adb) เพื่อช่วยรักษาข้อมูลงานไว้ในโปรไฟล์งาน เข้าถึงไดเรกทอรีและไฟล์ในโปรไฟล์งานไม่ได้
การรองรับตัวเลือกข้อมูลไบโอเมตริกเพิ่มเติม
Android 9 เพิ่มการควบคุมแบบละเอียดสำหรับการตรวจสอบสิทธิ์ฮาร์ดแวร์ด้วยข้อมูลไบโอเมตริกใน
หน้าจอล็อกของโปรไฟล์งาน โทรหาหมายเลขที่มีอยู่
DevicePolicyManager.setKeyguardDisabledFeatures()
ด้วย KEYGUARD_DISABLE_FACE
และ
KEYGUARD_DISABLE_IRIS
หากต้องการปิดใช้วิธีการตรวจสอบสิทธิ์ด้วยข้อมูลไบโอเมตริกทั้งหมดที่อุปกรณ์ระบุ ให้เพิ่ม KEYGUARD_DISABLE_BIOMETRICS
การเลิกใช้งานนโยบายผู้ดูแลระบบอุปกรณ์
Android 9 ทำเครื่องหมายนโยบายที่แสดงอยู่ด้านล่างว่าเลิกใช้งานสำหรับ DPC ที่ใช้อุปกรณ์ ผู้ดูแลระบบ นโยบายจะยังคงทำงานต่อไป ใน Android 9 เหมือนเดิม เริ่มตั้งแต่รุ่น Android 10 นโยบายเดียวกันนี้จะส่ง SecurityException เมื่อผู้ดูแลระบบอุปกรณ์เรียกใช้
USES_POLICY_DISABLE_CAMERA
USES_POLICY_DISABLE_KEYGUARD_FEATURES
USES_POLICY_EXPIRE_PASSWORD
USES_POLICY_LIMIT_PASSWORD
แอปพลิเคชันบางอย่างจะใช้ผู้ดูแลระบบอุปกรณ์สำหรับการดูแลระบบอุปกรณ์ของผู้บริโภค สำหรับ เช่น การล็อกและล้างข้อมูลในอุปกรณ์ที่สูญหาย นโยบายต่อไปนี้จะดำเนินต่อไป เพื่อเปิดใช้ฟีเจอร์นี้
โปรดอ่านข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงเหล่านี้ที่หัวข้อผู้ดูแลระบบอุปกรณ์ การเลิกใช้งาน
การลงทะเบียนคิวอาร์โค้ดที่คล่องตัว
คลังคิวอาร์โค้ดในตัว
Android 9 มาพร้อมกับไลบรารีคิวอาร์โค้ดเพื่อปรับปรุงการทำงานของอุปกรณ์คิวอาร์โค้ด การจัดสรร ผู้ดูแลระบบไอทีไม่ต้องป้อนรายละเอียด Wi-Fi ด้วยตนเองเพื่อตั้งค่าอีกต่อไป อุปกรณ์ แต่สำหรับ Android 9 คุณจะใส่รายละเอียด Wi-Fi เหล่านี้ลงไปได้ ภายในคิวอาร์โค้ด เมื่อผู้ดูแลระบบไอทีสแกนคิวอาร์โค้ดที่เป็นของบริษัท อุปกรณ์จะเชื่อมต่อกับ Wi-Fi โดยอัตโนมัติและป้อน โดยไม่ต้องมีการป้อนข้อมูลด้วยตนเองเพิ่มเติมใดๆ
วิธีการจัดสรรคิวอาร์โค้ดรองรับบริการเสริมต่อไปนี้เพื่อ ระบุรายละเอียด Wi-Fi
EXTRA_PROVISIONING_WIFI_HIDDEN
EXTRA_PROVISIONING_WIFI_PAC_URL
EXTRA_PROVISIONING_WIFI_PASSWORD
EXTRA_PROVISIONING_WIFI_PROXY_BYPASS
EXTRA_PROVISIONING_WIFI_PROXY_HOST
EXTRA_PROVISIONING_WIFI_PROXY_PORT
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
EXTRA_PROVISIONING_WIFI_SSID
กำหนดวันที่และเขตเวลาโดยใช้การจัดสรรเพิ่มเติม
วิธีการจัดสรรคิวอาร์โค้ดรองรับการจัดสรรบริการเสริมเพื่อตั้งเวลาและ เขตเวลาในอุปกรณ์:
ตัวเลือกการล้างข้อมูล
ผู้ดูแลระบบอุปกรณ์สามารถแสดงข้อความที่ปรับเปลี่ยนในแบบของผู้ใช้เมื่อนำงานออก
หรือผู้ใช้รอง ข้อความนี้จะช่วยให้ผู้ใช้อุปกรณ์เข้าใจว่า
ผู้ดูแลระบบไอทีได้นำโปรไฟล์งานหรือผู้ใช้รองออก โทร
wipeData(int, CharSequence)
และระบุ
ข้อความอธิบาย เมื่อเรียกใช้โดยผู้ใช้หลักหรือเจ้าของอุปกรณ์ ระบบจะโทร
ไม่แสดงข้อความและเริ่มรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น
หากต้องการนำข้อมูลการสมัครใช้บริการออกจากซิม eUICC ที่ฝัง โปรดโทร
wipeData()
และเพิ่ม WIPE_EUICC
ใน flags
อาร์กิวเมนต์
วิธีการสำหรับเจ้าของโปรไฟล์ที่เชื่อมโยง
วิธีการต่อไปนี้ใช้ได้กับโปรไฟล์ที่เชื่อมโยง เจ้าของ:
DevicePolicyManager.setKeyguardDisabled()
DevicePolicyManager.setStatusBarDisabled()
PackageInstaller.createSession()