นอกจากฟีเจอร์และความสามารถใหม่ๆ แล้ว Android 6.0 (API ระดับ 23) ยังมีการเปลี่ยนแปลงระบบและลักษณะการทํางานของ API อีกมากมาย เอกสารนี้จะไฮไลต์การเปลี่ยนแปลงที่สำคัญบางอย่างที่คุณควรทำความเข้าใจและนำมาพิจารณาในแอป
หากคุณเผยแพร่แอปสำหรับ Android ก่อนหน้านี้แล้ว โปรดทราบว่าการเปลี่ยนแปลงเหล่านี้ในแพลตฟอร์มจะส่งผลต่อแอป
สิทธิ์ขณะรันไทม์
เวอร์ชันนี้เปิดตัวรูปแบบสิทธิ์ใหม่ ซึ่งตอนนี้ผู้ใช้สามารถจัดการสิทธิ์ของแอปขณะรันไทม์ได้โดยตรง โมเดลนี้ช่วยให้ผู้ใช้เห็นและควบคุมสิทธิ์ต่างๆ ได้ดีขึ้น ขณะที่ทำให้ขั้นตอนการติดตั้งและการอัปเดตอัตโนมัติสำหรับนักพัฒนาแอปมีประสิทธิภาพมากขึ้น ผู้ใช้สามารถให้หรือเพิกถอนสิทธิ์แ��่ละรายการสำหรับแอปที่ติดตั้งแล้วได้
ในแอปที่กำหนดเป้าหมายเป็น Android 6.0 (API ระดับ 23) ขึ้นไป โปรดตรวจสอบและขอสิทธิ์ในรันไทม์ หากต้องการตรวจสอบว่าแอปได้รับสิทธิ์หรือไม่ ให้เรียกใช้checkSelfPermission()วิธีใหม่
หากต้องการขอสิทธิ์ ให้เรียกใช้เมธอด requestPermissions() ใหม่ แม้ว่าแอปของคุณจะไม่กำหนดเป้าหมายเป็น Android 6.0 (API ระดับ 23) คุณก็ควรทดสอบแอปภายใต้รูปแบบสิทธิ์ใหม่
โปรดดูรายละเอียดเกี่ยวกับการรองรับโมเดลสิทธิ์ใหม่ในแอปได้ที่ การใช้สิทธิ์ของระบบ ดูเคล็ดลับเกี่ยวกับวิธีประเมินผลกระทบต่อแอปได้ที่หมายเหตุการใช้งานสิทธิ์
Doze และสแตนด์บายแอป
เวอร์ชันนี้มีการเปิดตัวการเพิ่มประสิทธิภาพใหม่เพื่อประหยัดพลังงานสำหรับอุปกรณ์และแอปที่ไม่ได้ใช้งาน ฟีเจอร์เหล่านี้มีผลกับทุกแอป ดังนั้นโปรดทดสอบแอปในโหมดใหม่เหล่านี้
- โหมดสลีป: หากผู้ใช้ถอดปลั๊กอุปกรณ์และไม่ได้ใช้งานโดยปิดหน้าจอไว้เป็นระยะเวลาหนึ่ง อุปกรณ์จะเข้าสู่โหมดสลีป ซึ่งจะพยายามทำให้ระบบอยู่ในสถานะสลีป ในโหมดนี้ อุปกรณ์จะกลับมาทำงานตามปกติเป็นระยะๆ เป็นระยะเวลาสั้นๆ เพื่อให้การซิงค์แอปเกิดขึ้นได้และระบบสามารถดำเนินการที่รอดำเนินการได้
- โหมดสแตนด์บายของแอป: โหมดสแตนด์บายของแอปช่วยให้ระบบระบุได้ว่าแอปไม่มีการใช้งานเมื่อผู้ใช้ไม่ได้ใช้งานแอปอยู่ ระบบจะพิจารณาเมื่อผู้ใช้ไม่ได้แตะแอปเป็นระยะเวลาหนึ่ง หากถอดปลั๊กอุปกรณ์ออก ระบบจะปิดใช้การเข้าถึงเครือข่ายและระงับการซิงค์และงานสำหรับแอปที่ถือว่าไม่ได้ใช้งาน
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงการประหยัดพลังงานเหล่านี้ได้ที่หัวข้อการเพิ่มประสิทธิภาพสำหรับโหมด Doze และสแตนด์บายแอป
การนำ Apache HTTP Client ออก
เวอร์ชัน Android 6.0 จะไม่รองรับไคลเอ็นต์ HTTP ของ Apache หากแอปของคุณใช้ไคลเอ็นต์นี้และกำหนดเป้าหมายเป็น Android 2.3 (API ระดับ 9) ขึ้นไป ให้ใช้คลาส HttpURLConnection แทน API นี้มีประสิทธิภาพมากขึ้นเนื่องจากจะลดการใช้เครือข่ายผ่านการบีบอัดแบบโปร่งใสและการแคชการตอบกลับ รวมถึงลดการใช้พลังงาน หากต้องการใช้ Apache HTTP API ต่อไป คุณต้องประกาศการพึ่งพาเวลาคอมไพล์ต่อไปนี้ในไฟล์ build.gradle ก่อน
android {
useLibrary 'org.apache.http.legacy'
}BoringSSL
Android กำลังจะเลิกใช้ OpenSSL ไปใช้ไลบรารี BoringSSL หากคุณใช้ Android NDK ในแอป อย่าลิงก์กับไลบรารีการเข้ารหัสที่ไม่ได้เป็นส่วนหนึ่งของ NDK API เช่น libcrypto.so และ libssl.so ไลบรารีเหล่านี้ไม่ใช่ API สาธารณะ และอาจเปลี่ยนแปลงหรือใช้งานไม่ได้โดยไม่ได้รับการแจ้งเตือนในรุ่นและอุปกรณ์ต่างๆ
นอกจากนี้ คุณอาจเสี่ยงที่จะมีช่องโหว่ด้านความปลอดภัย แต่ให้แก้ไขโค้ดเนทีฟเพื่อเรียก API การเข้ารหัสของ Java ผ่าน 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
class อีกต่อไป เมธอด 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 โปรดทราบว่าแถบเครื่องมือแบบลอยไม่สามารถใช้งานย้อนหลังได้ และ appcompat จะควบคุมออบเจ็กต์ 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 และ Networking API
- ตอนนี้แอปจะเปลี่ยนสถานะของออบเจ็กต์
WifiConfigurationได้ก็ต่อเมื่อคุณสร้างออบเจ็กต์เหล่านั้นเท่านั้น คุณไม่ได้รับอนุญาตให้แก้ไขหรือลบWifiConfigurationออบเจ็กต์ที่ผู้ใช้หรือแอปอื่นๆ สร้างขึ้น -
ก่อนหน้านี้ หากแอปบังคับให้อุปกรณ์เชื่อมต่อกับเครือข่าย Wi-Fi ที่ต้องการโดยใช้
enableNetwork()ที่มีการตั้��ค่าdisableAllOthers=trueอุปกรณ์จะตัดการเชื่อมต่อจากเครือข่ายอื่นๆ เช่น อินเทอร์เน็ตมือถือ ในรุ่นนี้ อุปกรณ์จะไม่ยกเลิกการเชื่อมต่อกับเครือข่ายอื่นๆ ดังกล่าวอีกต่อไป หากtargetSdkVersionของแอปอยู่ที่“20”หรือต่ำกว่า ระบบจะปักหมุดแอปดังกล่าวไว้กับเครือข่าย Wi-Fi ที่เลือก หากtargetSdkVersionของแอปมีค่าอยู่ที่“21”ขึ้นไป ให้ใช้ API แบบหลายเครือข่าย (เช่นopenConnection(),bindSocket()และเมธอดbindProcessToNetwork()ใหม่) เพื่อให้แน่ใจว่ามีการส่งการจราจรของข้อมูลในเครือข่ายไปยังเครือข่ายที่เลือก
การเปลี่ยนแปลงบริการกล้อง
ในรุ่นนี้ รูปแบบการเข้าถึงทรัพยากรที่แชร์ในบริการกล้องได้เปลี่ยนไปจากรูปแบบการเข้าถึงแบบ "มาก่อนได้ก่อน" ก่อนหน้านี้เป็นรูปแบบการเข้าถึงที่ให้ความสำคัญกับกระบวนการที่มีลำดับความสำคัญสูง การเปลี่ยนแปลงลักษณะการทํางานของบริการมีดังนี้
- สิทธิ์เข้าถึงทรัพยากรระบบย่อยของกล้อง ซึ่งรวมถึงการเปิดและกำหนดค่าอุปกรณ์กล้อง จะได้รับการมอบหมายตาม "ลําดับความสําคัญ" ของกระบวนการสมัครของไคลเอ็นต์ โดยทั่วไปแล้ว กระบวนการแอปพลิเคชันที่มีกิจกรรมที่ผู้ใช้มองเห็นหรือทำงานอยู่เบื้องหน้าจะได้รับลำดับความสำคัญสูงกว่า ซึ่งทำให้การเรียกใช้ทรัพยากรกล้องมีความน่าเชื่อถือมากขึ้น
- ระบบอาจ "ย้ายออก" ไคลเอ็นต์กล้องที่ใช้งานอยู่ของแอปที่มีลำดับความสำคัญต่ำกว่าเมื่อแอปพลิเคชันที่มีลำดับความสำคัญสูงกว่าพยายามใช้กล้อง ใน
CameraAPI ที่เลิกใช้งานแล้ว ระบบจะเรียกใช้onError()สำหรับไคลเอ็นต์ที่ถูกย้ายออก ในCamera2API ผลลัพธ์ที่ได้คือมีการเรียกใช้onDisconnected()สำหรับไคลเอ็นต์ที่ถูกย้ายออก - ในอุปกรณ์ที่มีฮาร์ดแวร์กล้องที่เหมาะสม กระบวนการของแอป��ลิเคชันแต่ละรายการจะเปิดและใช้งานอุปกรณ์กล้องแยกต่างหากได้พร้อมกัน อย่างไรก็ตาม ขณะนี้บริการกล้องตรวจพบและไม่อนุญาตการใช้งานแบบหลายกระบวนการ ซึ่งการเข้าถึงพร้อมกันทำให้ประสิทธิภาพหรือความสามารถของอุปกรณ์กล้องที่เปิดอยู่ลดลงอย่างมาก การเปลี่ยนแปลงนี้อาจส่งผลให้มี "การขับออก" สำหรับไคลเอ็นต์ที่มีลำดับความสำคัญต่ำกว่า แม้ว่าจะไม่มีแอปอื่นพยายามเข้าถึงอุปกรณ์กล้องเดียวกันโดยตรงก็ตาม
- การเปลี่ยนผู้ใช้ปัจจุบันจะทำให้ไคลเอ็นต์กล้องที่ใช้งานอยู่ในแอปที่เป็นของบัญชีผู้ใช้ก่อนหน้าถูกนำออก การเข้าถึงกล้องจะจำกัดไว้สำหรับโปรไฟล์ผู้ใช้ที่เป็นของผู้ใช้อุปกรณ์ปัจจุบันเท่านั้น ในทางปฏิบัติ การดำเนินการนี้จะหมายความว่าบัญชี "ผู้มาเยือน" จะไม่สามารถทำงานต่อไปได้เมื่อผู้ใช้เปลี่ยนไปใช้บัญชีอื่น
รันไทม์
ตอนนี้รันไทม์ ART ใช้กฎการเข้าถึงสำหรับเมธอด newInstance() อย่างถูกต้องแล้ว การเปลี่ยนแปลงนี้ช่วยแก้ไขปัญหาที่ Dalvik ตรวจสอบกฎการเข้าถึงอย่างไม่ถูกต้องในเวอร์ชันก่อนหน้า
หากแอปใช้เมธอด newInstance() และคุณต้องการลบล้างการตรวจสอบการเข้าถึง ให้เรียกใช้เมธอด setAccessible() ซึ่งตั้งค่าพารามิเตอร์อินพุตเป็น true หากแอปใช้ไลบรารี appcompat เวอร์ชัน 7 หรือไลบรารี recyclerview เวอร์ชัน 7 คุณจะต้องอัปเดตแอปให้ใช้ไลบรารีเหล่านี้เวอร์ชันล่าสุด มิฉะนั้น โปรดตรวจสอบว่าได้อัปเดตคลาสที่กำหนดเองซึ่งอ้างอิงจาก XML แล้วเพื่อให้เข้าถึงเครื่องมือสร้างคลาสได้
รุ่นนี้จะอัปเดตลักษณะการทำงานของตัวลิงก์แบบไดนามิก ขณะนี้ตัวลิงก์แบบไดนามิกเข้าใจความแตกต่างระหว่าง soname ของไลบรารีแล���เส้นทางของไลบรารีแล้ว (
ข้อบกพร่องสาธารณะ 6670) และขณะนี้ใช้การค้นหาโดย soname แล้ว แอปที่ใช้งานได้ก่อนหน้านี้ซึ่งมีรายการ DT_NEEDED ที่ไม่ถูกต้อง (โดยปกติคือเส้นทางสัมบูรณ์ในระบบไฟล์ของเครื่องที่ใช้สร้าง) อาจโหลดไม่สำเร็จ
ตอนนี้การติดธง 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 สำหรับงานดังต่อไปนี้
- รายชื่อติดต่อของที่ทำงานในบริบทส่วนตัว ขณะนี้บันทึกการโทรของ Google
บันทึกการโทรจะแสดงรายชื่อติดต่อของที่ทำงานเมื่อผู้ใช้ดูการโทรที่ผ่านมา
การตั้งค่า
setCrossProfileCallerIdDisabled()เป็นtrueจะซ่อนรายชื่อติดต่อในโปรไฟล์งานในบันทึกการโทรของ Google Dialer รายชื่อติดต่อสำหรับงานจะแสดงพร้อมกับรายชื่อติดต่อส่วนตัวในอุปกรณ์ผ่านบลูทูธได้ก็ต่อเมื่อคุณตั้งค่าsetBluetoothContactSharingDisabled()เป็นfalseเท่านั้น โดยค่าเริ่มต้น ระบบจะตั้งค่าเป็นtrue - การนำการกำหนดค่า Wi-Fi ออก: ระบบจะนำการกำหนดค่า Wi-Fi ที่เจ้าของโปรไฟล์เพิ่ม (เช่น ผ่านการโทรไปยังเมธอด
addNetwork()) ออกหากมีการลบโปรไฟล์งานดังกล่าว - การล็อกการกำหนดค่า Wi-Fi: ผู้ใช้จะแก้ไขหรือลบการกำหนดค่า Wi-Fi ใดๆ ที่สร้างโดยเจ้าของอุปกรณ์ที่ใช้งานอยู่ไม่ได้อีกต่อไปหาก
WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWNไม่ใช่ 0 ผู้ใช้ยังคงสร้างและแก้ไขการกำหนดค่า Wi-Fi ของตนเองได้ อุปกรณ์ที่ใช้งานอยู่ เจ้าของมีสิทธิ์แก้ไขหรือนำการกำหนดค่า Wi-Fi ออก ซึ่งรวมถึงการกำหนดค่าที่ไม่ได้สร้างโดยเจ้าของ - ดาวน์โหลดเครื่องมือควบคุมนโยบายด้านอุปกรณ์ผ่านการเพิ่มบัญชี Google: เมื่อเพิ่มบัญชี Google ที่ต้องจัดการผ่านแอปเครื่องมือควบคุมนโยบายด้านอุปกรณ์ (DPC) ลงในอุปกรณ์นอกบริบทที่มีการจัดการ ตอนนี้ขั้นตอนการเพิ่มบัญชีจะแจ้งให้ผู้ใช้ติดตั้ง WPC ที่เหมาะสม ลักษณะการทำงานนี้มีผลกับบัญชีที่เพิ่มผ่านการตั้งค่า > บัญชี และในวิซาร์ดการตั้งค่าอุปกรณ์เริ่มต้นด้วย
- การเปลี่ยนแปลงลักษณะการทํางานของ
DevicePolicyManagerAPI บางรายการ- การเรียกใช้วิธี
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_BUNDLEextra เพื่อส่งข้อมูลไปยังแอปเจ้าของอุปกรณ์ในระห��่างการจัดสรร NFC ของอุปกรณ์ที่มีการจัดการได้แล้ว - Android for Work API ��ด้ร��บ���าร�������่ม��ระสิทธิภาพสำหรับสิทธิ์รันไทม์ของ M ซึ่งรวมถึงโปรไฟล์งาน เลเยอร์ความช่วยเหลือ และอื่นๆ API สิทธิ์
DevicePolicyManagerใหม่จะไม่ส่งผลต่อแอปรุ่นก่อน M - เมื่อผู้ใช้ออกจากส่วนซิงโครนัสของขั้นตอนการตั้งค่าที่เริ่มต้นผ่าน Intent
ACTION_PROVISION_MANAGED_PROFILEหรือACTION_PROVISION_MANAGED_DEVICEตอนนี้ระบบจะส่งคืนรหัสผลลัพธ์RESULT_CANCELED
- การเรียกใช้วิธี
- การเปลี่ยนแปลง API อื่นๆ
- การใช้ข้อมูล: ชั้นเรียน
android.app.usage.NetworkUsageStatsเปลี่ยนชื่อเป็นNetworkStatsแล้ว
- การใช้ข้อมูล: ชั้นเรียน
- การเปลี่ยนแปลงการตั้งค่าส่วนกลาง
- การตั้งค่าต่อไปนี้จะตั้งค่าผ่าน
setGlobalSettings()ไม่ได้อีกต่อไปBLUETOOTH_ONDEVELOPMENT_SETTINGS_ENABLEDMODE_RINGERNETWORK_PREFERENCEWIFI_ON
- ตอนนี้คุณตั้งค่าส่วนกลางเหล่านี้ผ่าน
setGlobalSettings()ได้แล้ว โดยทำดังนี้
- การตั้งค่าต่อไปนี้จะตั้งค่าผ่าน