หน้านี้แสดงภาพรวมของ API, ฟีเจอร์ และการเปลี่ยนแปลงลักษณะการทำงานใหม่ๆ ที่เปิดตัวใน Android 8.0 (API ระดับ 26) ซึ่งส่งผลต่อ Android ในองค์กร
API และฟีเจอร์ใหม่
เราได้ทำให้โหมดการจัดการสำหรับเจ้าของโปรไฟล์และเจ้าของอุปกรณ์มีประสิทธิภาพ เพิ่มผลผลิต และจัดสรรได้ง่ายขึ้นกว่าที่เคย นอกจากนี้ เรายังเปิดใช้สถานการณ์การใช้งานแบบใหม่ทั้งหมดด้วย ซึ่งก็คือโปรไฟล์งานในอุปกรณ์ที่มีการจัดการครบวงจร ฟีเจอร์เหล่านี้และฟีเจอร์อื่นๆ มีคำอธิบายอยู่ในส่วนต่อไปนี้
โปรไฟล์งานในอุปกรณ์ที่มีการจัดการเต็มรูปแบบ
ใน Android 8.0 อุปกรณ์ที่มีการจัดการครบวงจรจะมีโปรไฟล์งานได้ด้วย ซึ่งช่วยให้องค์กรแยกแอปและนโยบายออกจากกันได้ ขณะเดียวกันก็ยังคงควบคุมและมองเห็นโปรไฟล์ทั้ง 2 รายการ เจ้าของอุปกรณ์คนปัจจุบันหรือเครื่องมือควบคุมนโยบายด้านอุปกรณ์ (DPC) คนอื่นสามารถสร้างโปรไฟล์ที่มีการจัดการได้
เมื่อใช้โปรไฟล์งานในอุปกรณ์ที่มีการจัดการครบวงจร เจ้าของอุปกรณ์จะทำสิ่งต่อไปนี้ได้
- สร้างโปรไฟล์ที่มีการจัดการโดยไม่ต้องมีการโต้ตอบของผู้ใช้โดยเรียกใช้
EXTRA_PROVISIONING_SKIP_USER_CONSENT
- รับการแจ้งเตือนเมื่อมีการสร้างหรือนำผู้ใช้รองหรือโปรไฟล์ที่มีการจัดการออก การโทรกลับคือ
onUserAdded()
และonUserRemoved()
- ป้องกันไม่ให้ DPC อื่นๆ สร้างโปรไฟล์ที่มีการจัดการโดยใช้
DISALLOW_ADD_MANAGED_PROFILE
การตั้งค่านี้เป็นค่าเริ่มต้นใน Android 8.0 สําหรับเจ้าของอุปกรณ์ในอุปกรณ์ที่จัดสรรใหม่หรืออุปกรณ์ที่อัปเกรดเป็น Android 8.0 - นอกจากนี้ เจ้าของอุปกรณ์ยังป้องกันไม่ให้ผู้ใช้นำโปรไฟล์ที่มีการจัดการที่มีอยู่ออกได้ด้วยการใช้
DISALLOW_REMOVE_MANAGED_PROFILE
เจ้าของอุปกรณ์และเจ้าของโปรไฟล์จะสื่อสารกันได้หากมาจาก APK เดียวกันและเจ้าของมีความสัมพันธ์กัน (ดูความสัมพันธ์ของผู้ใช้ด้านล่าง)
ดูข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับการรองรับสถานการณ์การติดตั้งใช้งานรูปแบบใหม่นี้ได้ที่หน้าโปรไฟล์งานในอุปกรณ์ที่มีการจัดการอย่างเต็มรูปแบบ
การเชื่อมโยงผู้ใช้
กรณีที่เจ้าของอุปกรณ์และเจ้าของโปรไฟล์แสดงถึงองค์กรเดียวกัน
เจ้าของอุปกรณ์และโปรไฟล์สามารถสื่อสารกันได้ภายใน APK เดียวกัน เนื่องจากอาจต้องการแชร์นโยบายหรือสถานะ (ดูโปรไฟล์งานในอุปกรณ์ที่จัดการครบวงจรด้านบน)
ฟีเจอร์ทั้งอุปกรณ์ เช่น การบันทึกหรือโหมดงานการล็อกรายการที่อนุญาต จะใช้กับผู้ใช้ที่เชื่อมโยงได้
รหัสแอฟฟิลิเอตที่แนบอยู่กับโปรไฟล์หรือผู้ใช้จะระบุองค์กร เมื่อรหัสแอฟฟิลิเอตตรงกัน ผู้ใช้จะถือว่ามีการเชื่อมโยง เจ้าของอุปกรณ์และเจ้าของโปรไฟล์ใช้ setAffiliationIds() เพื่อตั้งค่ารหัสแอฟฟิลิเอต แสดงถึงองค์กรโดยใช้รหัสสตริงแบบยาวที่คาดเดาได้ยาก
สิทธิ์เข้าถึงใหม่สำหรับผู้ใช้ที่เกี่ยวข้อง
หากผู้ใช้และโปรไฟล์รองทั้งหมดในอุปกรณ์เชื่อมโยงกับเจ้าของอุปกรณ์ ฟีเจอร์ต่อไปนี้จะพร้อมใช้งาน
- การบันทึกความปลอดภัยโดยใช้
setSecurityLoggingEnabled()
- การบันทึกกิจกรรมของเครือข่ายโดยใช้
setNetworkLoggingEnabled()
- การรายงานข้อบกพร่องโดยใช้
requestBugreport()
ก่อนหน้านี้ การบันทึกความปลอดภัยและการรายงานข้อบกพร่องใช้ได้กับอุปกรณ์ที่มีผู้ใช้เพียงคนเดียวหรืออุปกรณ์ที่มีโปรไฟล์และผู้ใช้เพียงโปรไฟล์และผู้ใช้เพียงรายเดียวเท่านั้น
โหมดการล็อกงานพร้อมให้บริการแก่ผู้ใช้รองและโปรไฟล์ที่มีการจัดการเมื่อเชื่อมโยงกับเจ้าของอุปกรณ์ผ่าน setLockTaskPackages()
โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับการเข้าร่วมของผู้ใช้ที่หัวข้อผู้ใช้ที่เกี่ยวข้อง
ข้อจำกัดความรับผิดในการเตรียมความพร้อมที่กำหนดเอง
ตอนนี้ DPC สามารถแสดงข้อจำกัดความรับผิดของตนเองต่อผู้ใช้ในระหว่างการจัดเตรียมได้แล้ว ใช้ EXTRA_PROVISIONING_DISCLAIMERS
, EXTRA_PROVISIONING_DISCLAIMER_HEADER
และ EXTRA_PROVISIONING_DISCLAIMER_CONTENT
เพื่อระบุข้อจำกัดความรับผิดแบบมีการจัดรูปแบบข้อความ ข้อจำกัดความรับผิดที่กำหนดเองของ DPC จะปรากฏในรายการข้อกำหนดแบบยุบได้
ความปลอดภัย
เจ้าของโปรไฟล์และเจ้าของอุปกรณ์สามารถใช้ตัวเลือกนี้เพื่อกำหนดค่าระยะเวลาหมดเวลาในการปลดล็อกอุปกรณ์หรือโปรไฟล์ด้วยวิธีการตรวจสอบสิทธิ์รอง เช่น ลายนิ้วมือหรือตัวแทนความน่าเชื่อถือsetRequiredStrongAuthTimeout()
หลังจากสิ้นสุดระยะเวลาหมดเวลา ผู้ใช้ต้องปลดล็อกอุปกรณ์หรือโปรไฟล์โดยใช้วิธีการตรวจสอบสิทธิ์ที่รัดกุม เช่น รหัสผ่าน, PIN หรือรูปแบบ
เจ้าของอุปกรณ์และเจ้าของโปรไฟล์สามารถรีเซ็ตรหัสผ่านของอุปกรณ์และโปรไฟล์งานได้อย่างปลอดภัยโดยใช้resetPasswordWithToken()
สำหรับอุปกรณ์ที่รองรับการเข้ารหัสตามไฟล์ API นี้จะพร้อมใช้งานก่อนที่ผู้ใช้จะปลดล็อกอุปกรณ์หรือโปรไฟล์ โดยมีเงื่อนไขว่า DPC รองรับการเข้ารหัส
เมื่อล็อกโปรไฟล์งานในอุปกรณ์ที่รองรับการเข้ารหัสตามไฟล์ lockNow(int)
สามารถเลือกที่จะนำคีย์การเข้ารหัสหลักของโปรไฟล์งานออกได้โดยใช้ FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY
ระบบจะลบคีย์การเข้ารหัสออกด้วยหากผู้ใช้ปิดโปรไฟล์งาน
นอกจากนี้ เจ้าของอุปกรณ์ยังใช้ setNetworkLoggingEnabled()
เพื่อเปิดการบันทึกเครือข่ายของคำขอ DNS และการเชื่อมต่อ TCP ที่เริ่มต้นจากอุปกรณ์ของบริษัทได้ ดูข้อมูลเพิ่มเติมได้ที่การบันทึกกิจกรรมในเครือข่าย
เจ้าของโปรไฟล์สามารถจํากัดแพ็กเกจของผู้ใช้หลักที่จะเห็นการแจ้งเตือนในโปรไฟล์งานได้ โทรไปที่ setPermittedCrossProfileNotificationListeners()
เพื่อตั้งค่าแพ็กเกจในรายการที่อนุญาตซึ่งจะรับเหตุการณ์ผ่าน NotificationListenerService
การตั้งค่า null
(ค่าเริ่มต้น) เป็นผู้ฟังที่ได้รับอนุญาตจะปิดใช้รายการที่อนุญาตและแพ็กเกจทั้งหมดจะฟังการแจ้งเตือนได้ หากต้องการจำกัดเหตุการณ์ไว้ที่แพ็กเกจของระบบ ให้ส่ง Set ว่าง หากต้องการดูแอปที่เข้าถึงการแจ้งเตือนของโปรไฟล์งานไม่ได้ ผู้ใช้สามารถแตะการตั้งค่า > แอปและการแจ้งเตือน > สิทธิ์เข้าถึงพิเศษของแอป > สิทธิ์เข้าถึงการแจ้งเตือน
สุดท้าย เจ้าของโปรไฟล์และเจ้าของอุปกรณ์จะเรียกข้อมูลเกี่ยวกับการอัปเดตระบบที่รอดำเนินการซึ่งมีอยู่ในอุปกรณ์ได้โดยใช้ getPendingSystemUpdate()
การมอบสิทธิ์ App Management API
การมอบสิทธิ์ API ช่วยให้เจ้าของอุปกรณ์และเจ้าของโปรไฟล์สามารถถ่ายโอนการจัดการแอปไปยังแอปพลิเคชันอื่นๆ ได้อย่างเต็มที่ คลาส DevicePolicyManager
มีวิธีการจัดการขอบเขตการมอบสิทธิ์ที่เจ้าของอุปกรณ์และโปรไฟล์สามารถมอบให้กับแพ็กเกจได้ ดังนี้
- วิธีการ
setDelegatedScopes()
ช่วยให้ลูกค้าเจ้าของอุปกรณ์และเจ้าของโปรไฟล์ให้สิทธิ์เข้าถึง API ที่มีสิทธิ์แก่แอปอื่นๆ ได้ getDelegatedScopes()
method จะแสดงผลขอบเขตที่มอบให้กับแพ็กเกจgetDelegatePackages()
จะแสดงผลแพ็กเกจที่มีขอบเขต
ตารางต่อไปนี้แสดงวิธีจัดระเบียบเมธอดต่างๆ ใน DevicePolicyManager
ออกเป็นขอบเขตต่างๆ
ตารางที่ 1 ความเชื่อมโยงระหว่างขอบเขตกับวิธีการของนโยบายอุปกรณ์
บริการที่ทำงานอยู่เบื้องหลังเป็นเวลานาน
เจ้าของอุปกรณ์และโปรไฟล์สามารถสร้างคลาสย่อยจาก
DeviceAdminService
เพื่อสร้างบริการที่ทำงานอยู่เบื้องหลังได้ ระบบ Android จะพยายามทำให้บริการทำงานต่อไปขณะที่ผู้ใช้ใช้งาน
หากต้องการเรียกใช้งานเป็นระยะๆ ให้พิจารณาใช้ JobScheduler
ก่อนสร้างบริการที่ทำงานอยู่เบื้องหลัง
การควบคุมบริการสํารองข้อมูล
เจ้าของอุปกรณ์สามารถเปิด/ปิดบริการสำรองข้อมูล Android ได้โดยใช้วิธีการใหม่ใน DevicePolicyManager
เปิดและปิดใช้บริการสํารองข้อมูลโดยใช้ setBackupServiceEnabled()
ตรวจสอบสถานะบริการสํารองข้อมูลโดยใช้
isBackupServiceEnabled()
การกำหนดค่าพร็อกซี Wi-Fi
เจ้าของอุปกรณ์และเจ้าของโปรไฟล์สามารถกำหนดค่าเซิร์ฟเวอร์พร็อกซี HTTP สำหรับเครือข่าย Wi-Fi ได้ ใช้ไฟล์ PAC หรือการตั้งค่าด้วยตนเองเพื่อกำหนดค่าพร็อกซีเซิร์ฟเวอร์สำหรับเครือข่าย Wi-Fi แต่ละเครือข่าย หากต้องการตั้งค่าหรือนําพร็อกซีสําหรับ WifiConfiguration
ออก ให้เรียกใช้เมธอด setHttpProxy()
ของ WifiConfiguration
หากต้องการรับการตั้งค่าพร็อกซี ให้โทรไปที่
getHttpProxy()
กล่องโต้ตอบคำอธิบายสำหรับฟีเจอร์ที่ผู้ดูแลระบบปิดใช้
แอปของคุณควรแสดงคำอธิบายที่เป็นประโยชน์ต่อผู้ใช้ที่พยายามใช้ฟีเจอร์ที่ผู้ดูแลระบบปิดใช้ ตอนนี้แอปทั้งหมดสามารถใช้
createAdminSupportIntent()
เพื่อสร้าง Intent ที่แสดงกล่องโต้ตอบคําอธิบายเมื่อส่งไปยัง
startActivity(Intent)
Intents ประกอบด้วยคำอธิบายที่แปลและปรับแต่งสำหรับกล้องที่ปิดใช้ การจับภาพหน้าจอที่ปิดใช้ และUserManager
ข้อจำกัดทั้งหมด
การจำกัดบลูทูธ
เจ้าของอุปกรณ์สามารถปิดใช้บลูทูธ ซึ่งจะส่งผลต่อผู้ใช้และโปรไฟล์ทั้งหมดในอุปกรณ์ หากต้องการปิดบลูทูธ ให้เพิ่มข้อจำกัดของผู้ใช้
DISALLOW_BLUETOOTH
เจ้าของอุปกรณ์และเจ้าของโปรไฟล์สามารถป้องกันไม่ให้ผู้ใช้ส่งไฟล์ผ่านบลูทูธได้โดยใช้ DISALLOW_BLUETOOTH_SHARING
การรับไฟล์จะไม่ได้รับผลกระทบ เมื่อเจ้าของอุปกรณ์ตั้งค่า DISALLOW_BLUETOOTH_SHARING
จะมีผลกับผู้ใช้ทุกคนในอุปกรณ์ การตั้งค่านี้เป็นค่าเริ่มต้นใน Android 8.0 สำหรับโปรไฟล์ใหม่และโปรไฟล์ที่มีอยู่ในอุปกรณ์ที่อัปเกรดเป็น Android 8.0
การเปลี่ยนแปลงลักษณะการทำงาน
หากคุณกำลังสร้างแอปสําหรับธุรกิจ ซึ่งรวมถึง DPC คุณควรตรวจสอบการเปลี่ยนแปลงลักษณะการทํางานต่อไปนี้ใน Android 8.0 และแก้ไขแอปของคุณตามความเหมาะสม
การลบผู้ใช้
เจ้าของอุปกรณ์สามารถนำผู้ใช้รองและโปรไฟล์ที่มีการจัดการออกได้โดยใช้ removeUser()
แม้ว่าจะเปิดใช้ DISALLOW_REMOVE_USER
ไว้ก็ตาม
ความปลอดภัย
การตรวจสอบสิทธิ์
การเปลี่ยนแปลงต่อไปนี้มีผลในชั้นเรียน DevicePolicyManager
แล้ว
lockNow()
จะล็อกเฉพาะโปรไฟล์งานหากมีภารกิจแยกต่างหากสำหรับงาน- DPC ที่ทำหน้าที่เป็นเจ้าของอุปกรณ์หรือเจ้าของโปรไฟล์และกำหนดเป้าหมายเป็น Android 8.0 จะใช้
resetPassword()
วิธีนี้ไม่ได้อีกต่อไป หากเรียกใช้ ระบบจะแสดงข้อยกเว้นด้านความปลอดภัย แต่ควรใช้resetPasswordWithToken()
แทนหมายเหตุ: DPC ที่กําหนดเป้าหมายเป็น Android 7.1.1 (API ระดับ 25) หรือต่ำกว่า รวมถึง DPC ที่มีสิทธิ์ระดับผู้ดูแลระบบอุปกรณ์เท่านั้นจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงนี้
- สำหรับอุปกรณ์ที่รองรับการเข้ารหัสตามไฟล์
isActivePasswordSufficient()
จะไม่พร้อมใช้งานจนกว่าผู้ใช้จะปลดล็อกอุปกรณ์เป็นครั้งแรกหลังจากรีบูต หากเรียกใช้ก่อนผู้ใช้ปลดล็อกอุปกรณ์ ระบบจะยกเว้น
ข้อมูลจากโปรไฟล์งานที่ล็อก
Android 8.0 มีการเปลี่ยนแปลงอินเทอร์เฟซผู้ใช้เพื่อแยกข้อมูลจากโปรไฟล์งานที่มีการล็อก
- ตอนนี้การแจ้งเตือนสำหรับแอปในโปรไฟล์งานอาจซ่อนเนื้อหาของแอป ก่อนหน้านี้ ลิ้นชักการแจ้งเตือนจะแสดงเนื้อหาสำหรับแอปงานจากโปรไฟล์งานที่มีการล็อก
- ตอนนี้หน้าจอล่าสุดจะแสดงแผงแบบเรียบสำหรับการเรียกใช้แอปจากโปรไฟล์งานที่มีการล็อก แผงสีเรียบๆ มีไอคอนและชื่อแอป ก่อนหน้านี้ กิจกรรมหรืองานจากโปรไฟล์งานที่มีการล็อกจะแสดงตัวอย่างในหน้าจอล่าสุด
ความสมบูรณ์ของอุปกรณ์
- ตอนนี้การแจ้งว่าไม่เหมาะสม
ENSURE_VERIFY_APPS
เป็นการจำกัดผู้ใช้ทั่วโลก หากผู้ใช้ในอุปกรณ์มีข้อจํากัดนี้ ระบบจะบังคับใช้การยืนยันแอปกับผู้ใช้ทุกคนในอุปกรณ์ เช่น หากเจ้าของโปรไฟล์ตั้งค่าข้อจำกัดในโปรไฟล์งาน ระบบจะบังคับใช้การยืนยันแอปในโปรไฟล์ส่วนตัวของผู้ใช้ - ตอนนี้ระบบจะเรียกใช้
onSystemUpdatePending()
เมธอดสำหรับเจ้าของโปรไฟล์นอกเหนือจากเจ้าของอุปกรณ์ - เมื่อใช้คลาส
SystemUpdatePolicy
นโยบายการเลื่อนจะไม่มีผลกับแพตช์ความปลอดภัยอีกต่อไป ดังนั้นจึงเลื่อนแพตช์ความปลอดภัยไม่ได้อีกต่อไป อย่างไรก็ตาม ลักษณะการทํางานของนโยบายประเภทอื่นๆ เช่น นโยบายอัตโนมัติและนโยบายแบบกำหนดกรอบเวลา จะไม่ได้รับผลกระทบ - เจ้าของอุปกรณ์สามารถเรียกให้รีเซ็ตเป็นค่าเริ่มต้นได้โดยใช้
wipeData()
แม้ว่าจะเปิดใช้DISALLOW_FACTORY_RESET
ไว้ก็ตาม
VPN แบบเปิดตลอดเวลา
Android 8.0 มีการเปลี่ยนแปลงอินเทอร์เฟซผู้ใช้เพื่อช่วยให้ผู้ใช้ได้เข้าใจสถานะการเชื่อมต่อ VPN แบบเปิดอยู่เสมอ ดังนี้
- เมื่อการเชื่อมต่อ VPN แบบเปิดตลอดเวลาตัดการเชื่อมต่อหรือเชื่อมต่อไม่ได้ ผู้ใช้จะเห็นการแจ้งเตือนที่ปิดไม่ได้ การแตะการแจ้งเตือนจะแสดงการตั้งค่าการกำหนดค่า VPN การแจ้งเตือนจะหายไปเมื่อ VPN เชื่อมต่ออีกครั้งหรือผู้ใช้ปิดตัวเลือก VPN แบบเปิดตลอดเวลา
- VPN แบบเปิดตลอดเวลาช่วยให้ผู้ใช้อุปกรณ์บล็อกการเชื่อมต่อเครือข่ายที่ไม่ได้ใช้ VPN ได้ เมื่อเปิดตัวเลือกนี้ แอปการตั้งค่าจะเตือนผู้ใช้ว่าจะไม่มีการเชื่อมต่ออินเทอร์เน็ตจนกว่า VPN จะเชื่อมต่อ การตั้งค่าจะแจ้งให้ผู้ใช้ดำเนินการต่อหรือยกเลิก
ตอนนี้ VpnService
ของแอป VPN ต้องเรียกใช้เมธอด startForeground()
ของมันหลังจากเปิดใช้งาน เนื่องจากระบบ Android เริ่มบริการของแอป VPN โดยตรง การเปลี่ยนเป็นเบื้องหน้าจึงเป็นหน้าที่ของแอป Android 8.0 จะปิดแอป VPN ที่ไม่ได้เปลี่ยนบริการ VPN ไปอยู่เบื้องหน้า
การเรียกกลับรหัสผ่าน
ตอนนี้การเรียกกลับการเปลี่ยนแปลงรหัสผ่านของ DeviceAdminReceiver
จะมีพารามิเตอร์ user
เพื่อระบุผู้ใช้หรือโปรไฟล์ที่เป็นเจ้าของรหัสผ่าน ลายเซ็นเมธอดใหม่มีดังนี้
onPasswordChanged(Context, Intent, UserHandle)
onPasswordExpiring(Context, Intent, UserHandle)
onPasswordFailed(Context, Intent, UserHandle)
onPasswordSucceeded(Context, Intent, UserHandle)
การใช้งานเริ่มต้นของเมธอดใหม่แต่ละรายการจะเรียกใช้เวอร์ชันก่อนหน้าโดยละทิ้งอาร์กิวเมนต์ของผู้ใช้ Android 8.0 เลิกใช้งานเมธอดก่อนหน้า
การมอบสิทธิ์ App Management API
เมธอดต่อไปนี้ในคลาส DevicePolicyManager
เลิกใช้งานแล้ว
setCertInstallerPackage()
getCertInstallerPackage()
setApplicationRestrictionsManagingPackage()
getApplicationRestrictionsManagingPackage()
นอกจากนี้ คุณยังมอบสิทธิ์สโคปเดียวให้กับหลายแพ็กเกจได้แล้ว กล่าวคือ เจ้าของอุปกรณ์และเจ้าของโปรไฟล์สามารถให้สิทธิ์แพ็กเกจ 2 รายการที่แตกต่างกันในการเข้าถึงชุด API เดียวกันพร้อมกัน