ใน Android 6 ขึ้นไป ผู้ให้บริการ Wi-Fi และเครื่องมือวิเคราะห์แพ็กเก็ตถูกจำกัดไม่ให้ดึงข้อมูลที่อยู่ MAC เริ่มต้นของอุปกรณ์ผ่านสแต็ก Wi-Fi จากคำขอเครือข่าย ตั้งแต่ Android 10 เป็นต้นไป จะมีข้อจำกัดเพิ่มเติมที่จำกัดการเข้าถึงตัวระบุ (รหัส) ของอุปกรณ์ไว้สำหรับแอปที่มี ระดับสิทธิ์ ซึ่งจะช่วยปกป้องรหัสอุปกรณ์ เช่น
- หมายเลข IMEI, MEID, ESN และ IMSI ของโทรศัพท์
- หมายเลขบิวด์ หมายเลขซีเรียลของซิม หรือหมายเลขซีเรียลของ USB
ผู้ที่มีสิทธิ์เข้าถึงรหัสอุปกรณ์
รหัสอุปกรณ์จะถูกจํากัดในอุปกรณ์ Android 10 ทั้งหมด แม้ว่าแอปจะกําหนดเป้าหมายเป็น Android 9 หรือต่ำกว่าก็ตาม ผู้ที่เข้าถึงรหัสอุปกรณ์ได้มีดังนี้
- แอป SMS เริ่มต้น
- แอปที่มีทั้งสิทธิ์
READ_PRIVILEGED_PHONE_STATE
ในคลาสManifest.permission
และรายการที่อนุญาตในไฟล์privapp-permission.xml
และต้องโหลดในไดเรกทอรีpriv-app
ด้วย - แอปที่มีสิทธิ์ของผู้ให้บริการตามที่ระบุไว้ในสิทธิ์ของผู้ให้บริการ UICC
- เจ้าของอุปกรณ์หรือเจ้าของโปรไฟล์ที่มีสิทธิ์
READ_PHONE_STATE
ซึ่งได้รับในManifest.permission
คลาส (ไม่จําเป็นต้องเพิ่มลงในรายการที่อนุญาต)
การเข้าถึงแพ็กเกจที่มีสิทธิ์
แพ็กเกจต้องมีสิทธิ์เข้าถึงรหัสอุปกรณ์ โดยต้องมีสิทธิ์
READ_PRIVILEGED_PHONE_STATE
ในคลาส Manifest.permission
และอยู่ในรายการที่อนุญาตในไฟล์ privapp-permission.xml
ดูข้อมูลเกี่ยวกับกระบวนการอนุญาตรายการที่อนุญาตได้ที่การอนุญาตรายการที่อนุญาตที่มีสิทธิ์
ดูข้อมูลเกี่ยวกับการรับรหัสที่ไม่ซ้ำกันสำหรับแพ็กเกจที่ไม่มีสิทธิ์ได้ที่ Use Case ทั่วไปและตัวระบุที่เหมาะสมที่จะใช้
รหัสอุปกรณ์ที่จํากัดและที่อยู่ MAC แบบสุ่ม
หากต้องการจำกัดรหัสอุปกรณ์เพิ่มเติม อุปกรณ์ทั้งหมดใน Android 10 จะส่งที่อยู่ MAC แบบสุ่มโดยค่าเริ่มต้นสำหรับทั้งการสำรวจและคำขอที่เกี่ยวข้อง และต้องมีค่า MAC แบบสุ่มที่แตกต่างกันสำหรับ SSID แต่ละรายการ อย่าใช้ที่อยู่ MAC ของอุปกรณ์ที่โรงงานกำหนดในโหมดไคลเอ็นต์, กรณีการใช้งานจุดเข้าใช้งาน (AP) แบบซอฟต์ หรือ Wi-Fi Direct โดยต้องซ่อนจาก API ที่เข้าถึงได้แบบสาธารณะซึ่งไม่ใช่แอปที่มีสิทธิ์ แอปที่มีสิทธิ์ซึ่งกำหนดให้ระบบแสดงที่อยู่ MAC เริ่มต้นจะต้องได้รับสิทธิ์ LOCAL_MAC_ADDRESS
ผู้ใช้มีตัวเลือกในการเก็บที่อยู่ MAC แบบสุ่มเริ่มต้นที่กำหนดให้กับ SSID แต่ละรายการไว้ ตัวเลือกนี้จะดูได้ในส่วนความเป็นส่วนตัวในการตั้งค่า > รายละเอียดเครือข่าย ดูข้อมูลเกี่ยวกับการรับที่อยู่ MAC แบบสุ่มได้ที่ ที่อยู่ MAC แบบสุ่ม

รูปที่ 1 ที่อยู่ MAC แสดงเป็นที่อยู่แบบสุ่มในส่วนความเป็นส่วนตัวในรายละเอียดเครือข่าย
แอปที่เรียกใช้ Device ID API
แอปที่เรียกใช้ Device ID API ต้องเป็นไปตามข้อกําหนดของ Android 10 มิฉะนั้น ระบบจะแสดงผลลัพธ์ต่อไปนี้เมื่อผู้ใช้พยายามเข้าถึงรหัสอุปกรณ์
- แอปที่กำหนดเป้าหมายเป็น Android 10
SecurityException
แสดงจาก Device ID API- แอปที่กำหนดเป้าหมายเป็น Android 9 หรือต่ำกว่า
- หากมีสิทธิ์
READ_PHONE_STATE
ระบบจะแสดงผลลัพธ์null
หรือข้อมูลตัวยึดตำแหน่ง - หากไม่เป็นไปตามข้อกำหนดดังกล่าว Device ID API จะแสดงข้อผิดพลาด
SecurityException
ที่มีชื่อของเมธอดที่เรียกใช้ และระบุว่าแอปที่เรียกใช้ไม่เป็นไปตามข้อกำหนดในการเข้าถึงรหัสที่ขอ
ดูข้อมูลเพิ่มเติมเกี่ยวกับรหัสอุปกรณ์แบบแก้ไขไม่ได้ได้ที่ตัวระบุอุปกรณ์ที่รีเซ็ตไม่ได้และแนวทางปฏิบัติแนะนำสำหรับตัวระบุที่ไม่ซ้ำกัน
การทดสอบ
แอปต้องถูกป้องกันไม่ให้เข้าถึงหมายเลขซีเรียลของอุปกรณ์ และ IMEI หรือ MEID, หมายเลขซีเรียลของซิม และรหัสสมาชิก (หากมี) แอปที่มีสิทธิ์เข้าถึงรหัสเหล่านี้ต้องมีคุณสมบัติตรงตามเกณฑ์ข้อใดข้อหนึ่งที่อยู่ในส่วนผู้ที่เข้าถึงรหัสอุปกรณ์ได้ด้วย