ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
รหัสอุปกรณ์ที่เปลี่ยนแปลงไม่ได้
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ใน Android 6 ขึ้นไป ผู้ให้บริการ Wi-Fi และเครื่องมือวิเคราะห์แพ็กเก็ตถูกจำกัดไม่ให้ดึงข้อมูลที่อยู่ MAC เริ่มต้นของอุปกรณ์ผ่านสแต็ก Wi-Fi จากคำขอเครือข่าย ตั้งแต่ Android 10 เป็นต้นไป จะมีข้อจำกัดเพิ่มเติมที่จำกัดการเข้าถึงตัวระบุ (รหัส) ของอุปกรณ์ไว้สำหรับแอปที่มี
ระดับสิทธิ์ ซึ่งจะช่วยปกป้องรหัสอุปกรณ์ เช่น
- หมายเลข IMEI, MEID, ESN และ IMSI ของโทรศัพท์
- หมายเลขบิวด์ หมายเลขซีเรียลของซิม หรือหมายเลขซีเรียลของ USB
ผู้ที่มีสิทธิ์เข้าถึงรหัสอุปกรณ์
รหัสอุปกรณ์จะถูกจํากัดในอุปกรณ์ Android 10 ทั้งหมด แม้ว่าแอปจะกําหนดเป้าหมายเป็น Android 9 หรือต่ำกว่าก็ตาม ผู้ที่เข้าถึงรหัสอุปกรณ์ได้มีดังนี้
การเข้าถึงแพ็กเกจที่มีสิทธิ์
แพ็กเกจต้องมีสิทธิ์เข้าถึงรหัสอุปกรณ์ โดยต้องมีสิทธิ์
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
- แอปที่กำหนดเป้าหมายเป็น Android 9 หรือต่ำกว่า
- หากมีสิทธิ์
READ_PHONE_STATE
ระบบจะแสดงผลลัพธ์ null
หรือข้อมูลตัวยึดตำแหน่ง
- หากไม่เป็นไปตามข้อกำหนดดังกล่าว Device ID API จะแสดงข้อผิดพลาด
SecurityException
ที่มีชื่อของเมธอดที่เรียกใช้ และระบุว่าแอปที่เรียกใช้ไม่เป็นไปตามข้อกำหนดในการเข้าถึงรหัสที่ขอ
ดูข้อมูลเพิ่มเติมเกี่ยวกับรหัสอุปกรณ์แบบแก้ไขไม่ได้ได้ที่ตัวระบุอุปกรณ์ที่รีเซ็ตไม่ได้และแนวทางปฏิบัติแนะนำสำหรับตัวระบุที่ไม่ซ้ำกัน
การทดสอบ
แอปต้องถูกป้องกันไม่ให้เข้าถึงหมายเลขซีเรียลของอุปกรณ์ และ IMEI หรือ MEID, หมายเลขซีเรียลของซิม และรหัสสมาชิก (หากมี) แอปที่มีสิทธิ์เข้าถึงรหัสเหล่านี้ต้องมีคุณสมบัติตรงตามเกณฑ์ข้อใดข้อหนึ่งที่อยู่ในส่วนผู้ที่เข้าถึงรหัสอุปกรณ์ได้ด้วย
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Immutable device IDs\n\nIn Android 6 and higher, Wi-Fi service providers and packet analyzers have\nbeen restricted from retrieving a device's factory MAC address through the\nWi-Fi stack from network requests. Starting in Android 10, additional restrictions are in place that limit access to device\nidentifiers (IDs) to apps with the [privileged](/docs/core/permissions/perms-allowlist)[permission\nlevel](https://developer.android.com/reference/android/R.attr.html#protectionLevel). This protects device IDs such as\n\n- telephony IMEI, MEID, ESN, and IMSI numbers.\n- build, SIM, or USB serial numbers.\n\n### Who can access device IDs\n\nDevice IDs are restricted on all Android 10\ndevices, even if apps target Android 9 or lower. Device IDs can be accessed by:\n\n- The default SMS app.\n- Apps with both [READ_PRIVILEGED_PHONE_STATE](/docs/core/permissions/perms-allowlist#customizing-allowlists) permission in the `\n `[Manifest.permission](https://developer.android.com/reference/android/Manifest.permission) class, and allowlisting in the `privapp-permission.xml` file. These must also be loaded in the `priv-app` directory.\n- Apps with carrier privileges as defined in [UICC Carrier\n Privileges](/docs/core/connect/uicc).\n- A device owner or profile owner with [READ_PHONE_STATE](https://developer.android.com/reference/android/Manifest.permission.html#READ_PHONE_STATE) permission granted in the [Manifest.permission](https://developer.android.com/reference/android/Manifest.permission) class. (Allowlisting isn't required.)\n\n#### Privileged packages access\n\nA package must be privileged to access device IDs. It must have\n[READ_PRIVILEGED_PHONE_STATE](/docs/core/permissions/perms-allowlist#customizing-allowlists) permission in the\n`Manifest.permission` class, and be allowlisted in the\n`privapp-permission.xml` file. For information on the allowlist\nprocess, see [Privileged\nPermission Allowlisting](/docs/core/permissions/perms-allowlist).\n\nFor information on getting a unique ID for a *nonprivileged* package,\nrefer to [Common use cases and the appropriate identifier to use](https://developer.android.com/training/articles/user-data-ids#common-use-cases).\n\n#### Restricted device IDs and randomized MAC addresses\n\nTo further restrict device IDs, all devices on Android 10 transmit randomized MAC addresses by default for both\nprobe and associated requests, and must have a different randomized MAC address\nfor each SSID. Don't use the device factory MAC address in client mode, soft\naccess point (AP), or Wi-Fi Direct use cases. It must remain hidden from\npublicly accessible APIs that aren't privileged apps. Privileged apps that\nrequire the factory MAC address to be returned are required to have\n`LOCAL_MAC_ADDRESS` permission.\n\nUsers have the option to keep the *default randomized* MAC address that's assigned to each SSID.\nThe option is viewable under **Privacy** in\n**Settings** \\\u003e **Network details** . To learn about\nobtaining a randomized MAC address see [Randomized MAC addresses](https://developer.android.com/about/versions/10/privacy/changes#data-ids).\n\n**Figure 1.**MAC address shows as randomized under Privacy in Network details.\n\n#### Apps that invoke device ID APIs\n\nApps that invoke device ID APIs must meet the Android 10 requirements. Otherwise, when they try to access\ndevice IDs the following is returned:\n\n- Apps targeting Android 10\n - [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) is thrown from the device ID APIs.\n- Apps targeting Android 9 or earlier\n - If they have the [READ_PHONE_STATE](https://developer.android.com/reference/android/Manifest.permission.html#READ_PHONE_STATE) permission, either a `null` response or placeholder data is returned.\n - If they don't, the device ID APIs throw [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) that contains the name of the method called, and an indication that the calling app doesn't meet the requirements to access the requested ID.\n\nFor more on immutable device IDs see [Nonresettable\ndevice identifiers](https://developer.android.com/about/versions/10/privacy/changes#data-ids) and [best practices\nfor unique identifiers](https://developer.android.com/training/articles/user-data-ids).\n\n### Testing\n\nApps *must* be prevented from accessing the device serial number and,\nwhere applicable, IMEI or MEID, SIM serial number, and subscriber ID. Apps with\npermission to access these IDs must also meet one of the criteria listed under\n[Who can access device IDs](#who-access)."]]