นอกเหนือจากฟีเจอร์และความสามารถใหม่ๆ แล้ว Android 6.0 (API ระดับ 23) ยังมีสิ่งต่างๆ มากมาย การเปลี่ยนแปลงระบบและลักษณะการทำงานของ API ไฮไลต์ของเอกสารนี้ การเปลี่ยนแปลงสำคัญบางอย่างที่คุณควรทำความเข้าใจและพิจารณาในแอป
หากคุณเผยแพร่แอปสำหรับ Android ก่อนหน้านี้แล้ว โปรดทราบว่าการเปลี่ยนแปลงเหล่านี้ใน มีผลต่อแอปของคุณ
สิทธิ์ขณะรันไทม์
รุ่นนี้มีการเปิดตัวรูปแบบสิทธิ์ใหม่ ซึ่งขณะนี้ผู้ใช้สามารถจัดการได้โดยตรง สิทธิ์ของแอปขณะรันไทม์ โมเดลนี้ช่วยให้ผู้ใช้เห็นและควบคุมสิ่งต่างๆ ได้ดีขึ้น พร้อมกับปรับปรุงขั้นตอนการติดตั้งและการอัปเดตอัตโนมัติสำหรับนักพัฒนาแอป ผู้ใช้สามารถให้หรือเพิกถอนสิทธิ์แต่ละรายการสำหรับแอปที่ติดตั้งแล้วได้
ในแอปที่กำหนดเป้าหมายเป็น Android 6.0 (API ระดับ 23) ขึ้นไป อย่าลืมตรวจหาและส่งคำขอ
สิทธิ์ขณะรันไทม์ หากต้องการดูว่าแอปได้รับสิทธิ์หรือไม่ ให้ไปที่
checkSelfPermission()
ใหม่
ในการขอสิทธิ์ โปรดเรียก
requestPermissions()
แม้ว่าแอปจะไม่ได้กำหนดเป้าหมายเป็น Android 6.0 (API ระดับ 23) แต่คุณก็ควรทดสอบแอปภายใต้
โมเดลสิทธิ์ใหม่
ดูรายละเอียดเกี่ยวกับการรองรับรูปแบบสิทธิ์ใหม่ในแอปของคุณได้ที่ การใช้งานสิทธิ์ของระบบ สำหรับเคล็ดลับเกี่ยวกับวิธีประเมินผลกระทบที่มีต่อแอปของคุณ ดูหมายเหตุการใช้สิทธิ์
Doze และสแตนด์บายแอป
รุ่นนี้มีการนำเสนอการเพิ่มประสิทธิภาพการประหยัดพลังงานแบบใหม่สำหรับอุปกรณ์และแอปที่ไม่ได้ใช้งาน เหล่านี้ จะส่งผลต่อแอปทั้งหมด ดังนั้นอย่าลืมทดสอบแอปในโหมดใหม่เหล่านี้ด้วย
- Doze: หากผู้ใช้ถอดปลั๊กอุปกรณ์และปล่อยไว้นิ่งๆ ขณะที่ปิดหน้าจอ เป็นระยะเวลาหนึ่ง อุปกรณ์จะเข้าสู่โหมด Doze โดยพยายามรักษาระบบให้อยู่ อยู่ในสถานะสลีป ในโหมดนี้ อุปกรณ์จะกลับมาทำงานตามปกติอีกครั้งเป็นระยะๆ เป็นระยะเวลาสั้นๆ เพื่อให้ระบบสามารถซิงค์แอปและระบบสามารถดำเนินการใดๆ ที่ค้างอยู่ได้
- สแตนด์บายแอป: สแตนด์บายแอปช่วยให้ระบบระบุได้ว่าแอปไม่มีการใช้งาน เมื่อผู้ใช้ไม่ได้ใช้งานอยู่ ระบบจะพิจารณาเมื่อผู้ใช้ไม่ แตะแอปไปอีกระยะหนึ่ง หากอุปกรณ์ไม่ได้เสียบปลั๊ก ระบบจะปิดใช้เครือข่าย เข้าถึงและระงับการซิงค์และงานสำหรับแอปที่เห็นว่าไม่มีการใช้งาน
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงการประหยัดพลังงานเหล่านี้ได้ที่ การเพิ่มประสิทธิภาพสำหรับ Doze และสแตนด์บายแอป
การนำไคลเอ็นต์ Apache HTTP ออก
Android รุ่น 6.0 จะเลิกรองรับไคลเอ็นต์ Apache HTTP หากแอปของคุณใช้ไคลเอ็นต์นี้และ
กำหนดเป้าหมายเป็น Android 2.3 (API ระดับ 9) ขึ้นไป ให้ใช้คลาส HttpURLConnection
แทน API นี้มีประสิทธิภาพมากกว่าเนื่องจากลดการใช้เครือข่ายผ่านการบีบอัดแบบโปร่งใส
และการแคชการตอบสนอง รวมถึงลดการใช้พลังงาน หากต้องการใช้ Apache HTTP API ต่อไป คุณจะต้อง
ต้องประกาศทรัพยากร Dependency ของเวลาคอมไพล์ต่อไปนี้ในไฟล์ build.gradle
ก่อน
android { useLibrary 'org.apache.http.legacy' }
BoringSSL
Android กำลังย้ายจาก OpenSSL ไปยัง
BoringSSL
ไลบรารี หากคุณใช้ Android NDK ในแอป อย่าลิงก์กับไลบรารีการเข้ารหัส
ที่ไม่ได้เป็นส่วนหนึ่งของ NDK API เช่น libcrypto.so
และ libssl.so
เหล่านี้
ไลบรารีไม่ใช่ API สาธารณะ และอาจมีการเปลี่ยนแปลงหรือหยุดทำงานโดยไม่มีการแจ้งให้ทราบในรุ่นและอุปกรณ์ต่างๆ
นอกจากนี้ ยังอาจมีช่องโหว่ด้านความปลอดภัยอีกด้วย แต่ให้แก้ไข
โค้ดแบบเนทีฟเพื่อเรียกใช้ Java cryptography API ผ่าน JNI หรือเพื่อลิงก์แบบคงที่กับ
ไลบรารีวิทยาการเข้ารหัสที่คุณเลือก
การเข้าถึงตัวระบุฮาร์ดแวร์
เพื่อให้ผู้ใช้ได้รับการปกป้องข้อมูลที่ดียิ่งขึ้น สำหรับ Android ในรุ่นนี้
ยกเลิกสิทธิ์ทางโปรแกรมในการเข้าถึงตัวระบุฮาร์ดแวร์ในอุปกรณ์สำหรับ
ที่ใช้ Wi-Fi และ Bluetooth API
WifiInfo.getMacAddress()
และ
BluetoothAdapter.getAddress()
วิธี
ตอนนี้จะแสดงค่าคงที่ 02:00:00:00:00:00
วิธีเข้าถึงตัวระบุฮาร์ดแวร์ของอุปกรณ์ภายนอกที่อยู่ใกล้เคียงผ่านการสแกนหาบลูทูธและ Wi-Fi
ตอนนี้แอปของคุณต้องมี ACCESS_FINE_LOCATION
หรือ
สิทธิ์ACCESS_COARSE_LOCATION
:
หมายเหตุ: เมื่ออุปกรณ์ที่ใช้ Android 6.0 (API ระดับ 23) เริ่มต้น Wi-Fi หรือการสแกนบลูทูธในเบื้องหลัง การดำเนินการดังกล่าวจะปรากฏให้อุปกรณ์ภายนอกเห็นเป็น มาจากที่อยู่ MAC แบบสุ่ม
การแจ้งเตือน
รุ่นนี้จะนำเมธอด Notification.setLatestEventInfo()
ออก ใช้เมนู
Notification.Builder
แทนเพื่อสร้างการแจ้งเตือน หากต้องการอัปเดต
การแจ้งเตือนซ้ำๆ ให้ใช้อินสแตนซ์ Notification.Builder
ซ้ำ เรียกใช้
build()
วิธีในการรับ
อัปเดตอินสแตนซ์ Notification
รายการแล้ว
คำสั่ง adb shell dumpsys notification
จะไม่พิมพ์ข้อความแจ้งเตือนอีกต่อไป
ใช้คำสั่ง adb shell dumpsys notification --noredact
แทนเพื่อพิมพ์ข้อความ
ในออบเจ็กต์การแจ้งเตือน
การเปลี่ยนแปลง Audio Manager
ตั้งค่าระดับเสียงโดยตรงหรือการปิดเสียงสตรีมบางรายการผ่าน AudioManager
ระบบไม่รองรับชั้นเรียนอีกต่อไป เมธอด setStreamSolo()
เลิกใช้งานแล้วและคุณควรเรียกใช้เมธอด
วันที่ requestAudioFocus()
แทน ในทำนองเดียวกัน
เมธอด setStreamMute()
คือ
เลิกใช้งานแล้ว; ให้เรียกใช้เมธอด adjustStreamVolume()
แทน แล้วส่งผ่านค่าทิศทาง
ADJUST_MUTE
หรือ
ADJUST_UNMUTE
การเลือกข้อความ
เมื่อผู้ใช้เลือกข้อความในแอป ตอนนี้คุณสามารถแสดงการเลือกข้อความได้ เช่น ตัด คัดลอก และวางใน แถบเครื่องมือแบบลอย การใช้งานการโต้ตอบของผู้ใช้นั้นคล้ายกับ สำหรับแถบการดำเนินการตามบริบท ตามที่อธิบายไว้ใน เปิดใช้โหมดการดำเนินการตามบริบทสำหรับมุมมองแต่ละรายการ
ในการใช้แถบเครื่องมือแบบลอยสำหรับการเลือกข้อความ ให้ทำการเปลี่ยนแปลงต่อไปนี้ แอปพลิเคชัน:
- ในออบเจ็กต์
View
หรือActivity
ให้เปลี่ยนActionMode
สายจากstartActionMode(Callback)
ถึงstartActionMode(Callback, ActionMode.TYPE_FLOATING)
- ขยายการติดตั้งใช้งาน
ActionMode.Callback
ที่มีอยู่ActionMode.Callback2
แทน - ลบล้าง
onGetContentRect()
วิธีการระบุพิกัดของออบเจ็กต์Rect
(เช่น สี่เหลี่ยมผืนผ้าสำหรับการเลือกข้อความ) ในมุมมอง - หากการวางตำแหน่งสี่เหลี่ยมผืนผ้าใช้ไม่ได้อีกต่อไปและนี่เป็นองค์ประกอบเดียวที่จะใช้ไม่ได้
เรียกเมธอด
invalidateContentRect()
หากคุณกำลังใช้
ไลบรารีการสนับสนุนของ Android เวอร์ชัน 22.2 โปรดทราบว่าแถบเครื่องมือแบบลอยจะ
สามารถเข้ากันได้แบบย้อนหลังและโปรแกรมเข้ากันได้ควบคุมออบเจ็กต์ ActionMode
รายการด้วยวิธีต่อไปนี้
"ค่าเริ่มต้น" วิธีนี้จะป้องกันไม่ให้แสดงแถบเครื่องมือแบบลอย วิธีเปิดใช้งาน
การสนับสนุน ActionMode
ใน
AppCompatActivity
โทร
getDelegate()
แล้วโทร
setHandleNativeActionModesEnabled()
หลังส่งคืน
AppCompatDelegate
ออบเจ็กต์และตั้งค่าอินพุต
เป็น false
การเรียกนี้ส่งคืนการควบคุม ActionMode
ออบเจ็กต์ไปยัง
กรอบการทำงาน ในอุปกรณ์ที่ใช้ Android 6.0 (API ระดับ 23) ซึ่งทำให้เฟรมเวิร์กสามารถรองรับ
ActionBar
หรือโหมดแถบเครื่องมือแบบลอยขณะใช้งานอุปกรณ์
Android 5.1 (API ระดับ 22) หรือต่ำกว่า เฉพาะโหมด ActionBar
เท่านั้น
ที่รองรับ
การเปลี่ยนแปลงบุ๊กมาร์กของเบราว์เซอร์
รุ่นนี้ยกเลิกการสนับสนุนบุ๊กมาร์กส่วนกลาง
android.provider.Browser.getAllBookmarks()
และ android.provider.Browser.saveBookmark()
ถูกนำออกแล้ว ในทำนองเดียวกัน READ_HISTORY_BOOKMARKS
และ WRITE_HISTORY_BOOKMARKS
สิทธิ์ออกแล้ว หากแอปกำหนดเป้าหมายเป็น Android 6.0 (API ระดับ 23) ขึ้นไป อย่าเข้าถึง
บุ๊กมาร์กจากผู้ให้บริการทั่วโลกหรือใช้สิทธิ์บุ๊กมาร์ก แต่แอปควรจัดเก็บ
ข้อมูลบุ๊กมาร์กไว้ภายในได้
การเปลี่ยนแปลง Android Keystore
ในรุ่นนี้ ผู้ให้บริการคีย์สโตร์ Android ไม่รองรับอีกต่อไป DSA ระบบยังคงรองรับ ECDSA
ระบบจะไม่ลบคีย์ที่ไม่ต้องใช้การเข้ารหัสเมื่อไม่มีการเคลื่อนไหวอีกต่อไปเมื่อล็อกหน้าจอที่ปลอดภัย ถูกปิดใช้หรือรีเซ็ต (เช่น โดยผู้ใช้หรือผู้ดูแลระบบอุปกรณ์) คีย์ที่ต้องใช้ ระบบจะลบการเข้ารหัสข้อมูลที่ไม่มีการเคลื่อนไหวในระหว่างกิจกรรมเหล่านี้
การเปลี่ยนแปลงเกี่ยวกับ Wi-Fi และเครือข่าย
รุ่นนี้มีการเปลี่ยนแปลงลักษณะการทำงานต่อไปนี้สำหรับ Wi-Fi และ API เครือข่าย
- ขณะนี้แอปเปลี่ยนสถานะของออบเจ็กต์ได้
WifiConfiguration
รายการเท่านั้น หากคุณสร้างออบเจ็กต์เหล่านี้ คุณไม่ได้รับอนุญาตให้แก้ไขหรือลบWifiConfiguration
ออบเจ็กต์ที่ผู้ใช้หรือแอปอื่นๆ สร้างขึ้น -
ก่อนหน้านี้ หากแอปบังคับให้อุปกรณ์เชื่อมต่อเครือข่าย Wi-Fi ที่เจาะจงโดยใช้
enableNetwork()
ที่มี การตั้งค่าdisableAllOthers=true
, อุปกรณ์ยกเลิกการเชื่อมต่อกับเครือข่ายอื่นๆ เช่น อินเทอร์เน็ตมือถือ ในรุ่นนี้ อุปกรณ์จะไม่ยกเลิกการเชื่อมต่อกับเครือข่ายอื่นๆ ดังกล่าวอีกต่อไป ถ้าtargetSdkVersion
ของแอปอยู่ที่“20”
หรือต่ำกว่า ระบบปักหมุดแอปไว้กับรายการที่เลือก เครือข่าย Wi-Fi หากtargetSdkVersion
ของแอปเท่ากับ“21”
ขึ้นไป ให้ใช้ Multinetwork API (เช่นopenConnection()
,bindSocket()
และbindProcessToNetwork()
) เพื่อให้แน่ใจว่ามีการส่งการจราจรของข้อมูลในเครือข่ายไปยังเครือข่ายที่เลือก
การเปลี่ยนแปลงบริการของกล้อง
ในรุ่นนี้ โมเดลสำหรับการเข้าถึงทรัพยากรที่แชร์ในบริการกล้องได้มีการเปลี่ยนแปลง จากรูปแบบการเข้าถึง "มาก่อนได้ก่อน" ก่อนหน้า ไปยังรูปแบบการเข้าถึงที่มีลำดับความสำคัญสูง กระบวนการที่เหมาะสม การเปลี่ยนแปลงลักษณะการทำงานของบริการมีดังนี้
- สิทธิ์เข้าถึงทรัพยากรระบบย่อยของกล้อง รวมถึงการเปิดและกำหนดค่าอุปกรณ์กล้อง มอบรางวัลโดยอิงตาม "ลำดับความสำคัญ" ของกระบวนการสมัครของลูกค้า กระบวนการสมัครกับ โดยทั่วไปแล้ว กิจกรรมที่ผู้ใช้มองเห็นได้หรือกิจกรรมเบื้องหน้าจะมีลำดับความสำคัญสูงกว่า ทำให้ทรัพยากรของกล้อง และการได้มาซึ่ง เชื่อถือได้มากขึ้น
- ไคลเอ็นต์กล้องที่ใช้งานอยู่สำหรับแอปที่มีลำดับความสำคัญต่ำกว่าอาจถูก "นำออก" เมื่อลำดับความสำคัญสูงกว่า
พยายามจะใช้กล้อง ใน API
Camera
ที่เลิกใช้งานแล้ว ผลลัพธ์นี้จะปรากฏในonError()
กำลัง เรียกลูกค้าที่ถูกขับออก ในCamera2
API จะเกิด วันที่onDisconnected()
กำลังถูกเรียกหาลูกค้าที่ถูกขับออก - บนอุปกรณ์ที่มีฮาร์ดแวร์กล้องที่เหมาะสม กระบวนการของแอปพลิเคชันที่แยกต่างหากจะสามารถดำเนินการต่อไปนี้ เปิดได้อย่างอิสระและใช้อุปกรณ์กล้องแยกกันได้พร้อมกัน อย่างไรก็ตาม การใช้หลายกระบวนการ กรณีที่การเข้าถึงพร้อมกันทำให้ประสิทธิภาพหรือความสามารถของ บริการกล้องตรวจพบและไม่อนุญาตอุปกรณ์กล้องที่เปิดอยู่ใดๆ ในขณะนี้ การเปลี่ยนแปลงนี้ อาจส่งผลให้มีการ "ถูกถอดออก" สำหรับลูกค้าที่มีลำดับความสำคัญต่ำกว่า แม้ว่าจะไม่มีแอปอื่นๆ อยู่ กำลังพยายามเข้าถึงอุปกรณ์กล้องเดียวกัน
- การเปลี่ยนผู้ใช้ปัจจุบันจะทำให้ไคลเอ็นต์กล้องที่ใช้งานอยู่ในแอปที่เป็นของบัญชีผู้ใช้ก่อนหน้า ที่จะถูกขับออก การเข้าถึงกล้องจะจำกัดเฉพาะโปรไฟล์ผู้ใช้ของผู้ใช้อุปกรณ์คนปัจจุบันเท่านั้น ในทางปฏิบัติ บัญชี "ผู้มาเยือน" จะไม่สามารถปล่อยให้มีการทำงานอยู่ได้ เป็นต้น กระบวนการที่ใช้ระบบย่อยของกล้องเมื่อผู้ใช้เปลี่ยนไปใช้บัญชีอื่น
เวลาทำงาน
ตอนนี้รันไทม์ของ ART นำกฎการเข้าถึงสำหรับ
newInstance()
วิธี ช่วงเวลานี้
เปลี่ยนแก้ไขปัญหาที่ Dalvik ตรวจสอบกฎการเข้าถึงอย่างไม่ถูกต้องในเวอร์ชันก่อนหน้า
หากแอปของคุณใช้
newInstance()
วิธีและคุณ
ต้องการลบล้างการตรวจสอบการเข้าถึง เรียก
setAccessible()
เมธอดที่มีอินพุต
ตั้งค่าพารามิเตอร์เป็น true
หากแอปของคุณใช้
v7 appcompat library หรือ
ไลบรารี Recyclerview v7
คุณต้องอัปเดตแอปเพื่อใช้ไลบรารีเหล่านี้เป็นเวอร์ชันล่าสุด มิฉะนั้น โปรดตรวจสอบว่า
ระบบจะอัปเดตคลาสที่กำหนดเองที่อ้างอิงจาก XML เพื่อให้เข้าถึงเครื่องมือสร้างคลาสได้
รุ่นนี้จะอัปเดตลักษณะการทำงานของ Linker แบบไดนามิก ตอนนี้ Linker แบบไดนามิกเข้าใจ
ความแตกต่างระหว่าง soname
ของไลบรารีและเส้นทางของไลบรารี
(
ข้อบกพร่องสาธารณะ 6670) และการค้นหาโดย soname
คือ
ที่มีการนำไปใช้ แอปที่ใช้งานได้ก่อนหน้านี้ซึ่งมีรายการ DT_NEEDED
ที่ไม่ถูกต้อง
(โดยปกติคือเส้นทางสัมบูรณ์ในระบบไฟล์ของเครื่องสร้าง) อาจล้มเหลวเมื่อโหลด
ติดตั้งใช้งาน Flag dlopen(3) RTLD_LOCAL
อย่างถูกต้องแล้ว โปรดทราบว่า
RTLD_LOCAL
คือค่าเริ่มต้น ดังนั้นการเรียกไปยัง dlopen(3)
ที่ไม่ได้ใช้อย่างเด่นชัด
RTLD_LOCAL
จะได้รับผลกระทบ (เว้นแต่แอปได้ใช้RTLD_GLOBAL
อย่างชัดแจ้ง) ด้วย
RTLD_LOCAL
สัญลักษณ์จะใช้ไม่ได้ในไลบรารีที่โหลดหลังจากเรียกไปยัง
dlopen(3)
(ซึ่งจะอ้างอิงจาก DT_NEEDED
รายการ)
ใน Android เวอร์ชันก่อนหน้า หากแอปขอให้ระบบโหลดไลบรารีที่ใช้ร่วมกัน
การย้ายตำแหน่งข้อความ ระบบจะแสดงคำเตือนแต่ยังคงสามารถโหลดไลบรารีได้
ในรุ่นนี้ ระบบจะปฏิเสธไลบรารีนี้หากเวอร์ชัน SDK เป้าหมายของแอปคือ 23
หรือสูงกว่า เพื่อช่วยให้คุณตรวจพบว่าไลบรารีล้มเหลวหรือไม่ แอปของคุณควรบันทึก
dlopen(3)
ล้มเหลว และรวมข้อความคำอธิบายปัญหาที่ dlerror(3)
การโทรกลับ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการจัดการการย้ายข้อความ โปรดดู
การตรวจสอบ APK
ขณะนี้แพลตฟอร์มจะตรวจสอบ APK ที่เข้มงวดขึ้น APK จะถือว่าเสียหายหากไฟล์ ที่ประกาศไว้ในไฟล์ Manifest แต่ไม่มีอยู่ใน APK APK ต้องได้รับการลงนามอีกครั้ง หากมี เนื้อหาจะถูกลบ
การเชื่อมต่อผ่าน USB
ขณะนี้การเชื่อมต่ออุปกรณ์ผ่านพอร์ต USB ได้รับการตั้งค่าเป็นโหมดชาร์จเท่านั้นโดยค่าเริ่มต้น วิธีเข้าถึง อุปกรณ์และเนื้อหาผ่านการเชื่อมต่อ USB ผู้ใช้ต้องอนุญาตอย่างชัดแจ้งสำหรับ การโต้ตอบ หากแอปของคุณรองรับการโต้ตอบของผู้ใช้กับอุปกรณ์ผ่านพอร์ต USB ให้ใช้ ว่าต้องเปิดใช้การโต้ตอบอย่างชัดแจ้ง
การเปลี่ยนแปลงของ Android for Work
รุ่นนี้มีการเปลี่ยนแปลงลักษณะการทำงานต่อไปนี้สำหรับ Android for Work
- รายชื่อติดต่อของที่ทำงานในบริบทส่วนตัว แป้นโทรศัพท์ Google
ขณะนี้ "บันทึกการโทร" จะแสดงรายชื่อติดต่อของที่ทำงานเมื่อผู้ใช้ดูการโทรที่ผ่านมา
การเกริ่นนำ
setCrossProfileCallerIdDisabled()
ไปที่true
ซ่อนรายชื่อติดต่อของโปรไฟล์งานในบันทึกการโทรของโทรศัพท์ Google รายชื่อติดต่อของที่ทำงานสามารถเป็น แสดงร่วมกับรายชื่อติดต่อส่วนบุคคลไปยังอุปกรณ์ผ่านบลูทูธเท่านั้น คุณตั้งค่าsetBluetoothContactSharingDisabled()
เป็นfalse
ระบบจะตั้งค่าเป็นtrue
โดยค่าเริ่มต้น - การนำการกำหนดค่า Wi-Fi ออก: เจ้าของโปรไฟล์เพิ่มการกำหนดค่า Wi-Fi แล้ว
(เช่น ผ่านการเรียกไปยัง
addNetwork()
) จะถูกนำออกหากโปรไฟล์งานดังกล่าวถูกลบ - การปิดล็อกการกำหนดค่า Wi-Fi: การกำหนดค่า Wi-Fi ใดๆ ที่สร้างโดย
ผู้ใช้จะไม่สามารถแก้ไขหรือลบเจ้าของอุปกรณ์ที่ใช้งานอยู่ได้อีกต่อไปหาก
WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN
ไม่ใช่ 0 ผู้ใช้ยังคงสร้างและแก้ไขการกำหนดค่า Wi-Fi ของตนเองได้ อุปกรณ์ที่ใช้งานอยู่ เจ้าของจะมีสิทธิ์แก้ไขหรือนำการกำหนดค่า Wi-Fi ออก ซึ่งรวมถึง ที่ไม่ได้สร้างขึ้นโดยพวกเขา - ดาวน์โหลดเครื่องมือควบคุมนโยบายด้านอุปกรณ์ผ่านการเพิ่มบัญชี Google: เมื่อ เพิ่มบัญชีที่ต้องมีการจัดการผ่านแอปเครื่องมือควบคุมนโยบายด้านอุปกรณ์ (DPC) ลงในอุปกรณ์ นอกบริบทที่มีการจัดการ ตอนนี้ขั้นตอนการเพิ่มบัญชีจะแจ้งให้ผู้ใช้ติดตั้ง WPC ที่เหมาะสม พฤติกรรมนี้ยังมีผลกับบัญชีที่เพิ่มผ่าน การตั้งค่า > บัญชีและในวิซาร์ดการตั้งค่าอุปกรณ์เริ่มต้น
- การเปลี่ยนแปลงการทำงานของ API
DevicePolicyManager
บางรายการมีดังนี้- การเรียกใช้
setCameraDisabled()
จะมีผลกับกล้องสำหรับผู้ใช้ที่โทรเท่านั้น การเรียกโค้ดจากโปรไฟล์ที่มีการจัดการไม่ ส่งผลต่อแอปกล้องที่ทำงานกับผู้ใช้หลัก - นอกจากนี้
setKeyguardDisabledFeatures()
ขณะนี้ใช้ได้สำหรับเจ้าของโปรไฟล์และเจ้าของอุปกรณ์ - เจ้าของโปรไฟล์สามารถตั้งข้อจำกัดการล็อกปุ่มต่อไปนี้ได้
KEYGUARD_DISABLE_TRUST_AGENTS
และKEYGUARD_DISABLE_FINGERPRINT
ซึ่งส่งผลต่อ การตั้งค่าการล็อกสำหรับผู้ใช้ระดับบนสุดของโปรไฟล์KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS
ซึ่ง มีผลกับการแจ้งเตือนที่สร้างโดยแอปพลิเคชันในโปรไฟล์ที่มีการจัดการเท่านั้น
- เมธอด
DevicePolicyManager.createAndInitializeUser()
และDevicePolicyManager.createUser()
เลิกใช้งานแล้ว setScreenCaptureDisabled()
ตอนนี้เมธอดจะบล็อกโครงสร้างการสนับสนุนเมื่อแอปของผู้ใช้ที่กำหนดอยู่เบื้องหน้าด้วยEXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM
จะมีค่าเริ่มต้นเป็น SHA-256 ระบบยังคงรองรับ SHA-1 สำหรับความเข้ากันได้แบบย้อนหลัง แต่จะถูกนำออก ในอนาคตEXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM
ยอมรับเฉพาะ SHA-256- ตอนนี้ระบบได้นำ API เริ่มต้นของอุปกรณ์ที่มีอยู่ใน Android 6.0 (API ระดับ 23) ออกแล้ว
- นำ
EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS
ออกเพื่อให้ขยับ NFC ได้ การจัดสรรไม่สามารถปลดล็อกอุปกรณ์ที่ป้องกันการรีเซ็ตเป็นค่าเริ่มต้นโดยใช้โปรแกรมได้ - ตอนนี้คุณใช้
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
ได้แล้ว เพิ่มเติมสำหรับส่งผ่านข้อมูลไปยังแอปเจ้าของอุปกรณ์ในระหว่างการจัดสรร NFC ของอุปกรณ์ที่มีการจัดการ - API ของ Android for Work ได้รับการเพิ่มประสิทธิภาพเพื่อสิทธิ์รันไทม์ของ M ซึ่งรวมถึงโปรไฟล์งาน
เลเยอร์สนับสนุน และอื่นๆ API สิทธิ์
DevicePolicyManager
ใหม่ไม่ทำงาน ส่งผลต่อแอปก่อนการเผยแพร่ - เมื่อผู้ใช้ออกจากส่วนซิงโครนัสของขั้นตอนการตั้งค่าที่เริ่มต้นผ่าน
ACTION_PROVISION_MANAGED_PROFILE
หรือACTION_PROVISION_MANAGED_DEVICE
Intent, ระบบ ตอนนี้จะแสดงรหัสผลลัพธ์RESULT_CANCELED
- การเรียกใช้
- การเปลี่ยนแปลงใน API อื่นๆ
- ปริมาณการใช้อินเทอร์เน็ต: เปลี่ยนชื่อชั้นเรียน
android.app.usage.NetworkUsageStats
แล้วNetworkStats
- ปริมาณการใช้อินเทอร์เน็ต: เปลี่ยนชื่อชั้นเรียน
- การเปลี่ยนแปลงการตั้งค่าส่วนกลาง:
- ไม่สามารถตั้งค่าเหล่านี้ผ่าน
setGlobalSettings()
ได้อีกต่อไป:BLUETOOTH_ON
DEVELOPMENT_SETTINGS_ENABLED
MODE_RINGER
NETWORK_PREFERENCE
WIFI_ON
- คุณสามารถกำหนดการตั้งค่าส่วนกลางเหล่านี้ผ่าน
setGlobalSettings()
ได้แล้ว
- ไม่สามารถตั้งค่าเหล่านี้ผ่าน