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

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