การเปลี่ยนแปลง Android 6.0

นอกเหนือจากฟีเจอร์และความสามารถใหม่ๆ แล้ว 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

การเลือกข้อความ

หน้าจอแสดงฟีเจอร์การเลือกข้อความใหม่ในแถบเครื่องมือแบบลอย

เมื่อผู้ใช้เลือกข้อความในแอป ตอนนี้คุณสามารถแสดงการเลือกข้อความได้ เช่น ตัด คัดลอก และวางใน แถบเครื่องมือแบบลอย การใช้งานการโต้ตอบของผู้ใช้นั้นคล้ายกับ สำหรับแถบการดำเนินการตามบริบท ตามที่อธิบายไว้ใน เปิดใช้โหมดการดำเนินการตามบริบทสำหรับมุมมองแต่ละรายการ

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

  1. ในออบเจ็กต์ View หรือ Activity ให้เปลี่ยน ActionMode สายจาก startActionMode(Callback) ถึง startActionMode(Callback, ActionMode.TYPE_FLOATING)
  2. ขยายการติดตั้งใช้งาน ActionMode.Callback ที่มีอยู่ ActionMode.Callback2 แทน
  3. ลบล้าง onGetContentRect() วิธีการระบุพิกัดของออบเจ็กต์ Rect (เช่น สี่เหลี่ยมผืนผ้าสำหรับการเลือกข้อความ) ในมุมมอง
  4. หากการวางตำแหน่งสี่เหลี่ยมผืนผ้าใช้ไม่ได้อีกต่อไปและนี่เป็นองค์ประกอบเดียวที่จะใช้ไม่ได้ เรียกเมธอด 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() ได้แล้ว