Trong Android 6 trở lên, các nhà cung cấp dịch vụ Wi-Fi và bộ phân tích gói đã bị hạn chế truy xuất địa chỉ MAC xuất xưởng của thiết bị thông qua ngăn xếp Wi-Fi từ các yêu cầu mạng. Bắt đầu từ Android 10, các hạn chế bổ sung được áp dụng nhằm hạn chế quyền truy cập vào số nhận dạng thiết bị (ID) đối với các ứng dụng có cấp quyền đặc quyền . Điều này bảo vệ các ID thiết bị, chẳng hạn như
- số điện thoại IMEI, MEID, ESN và IMSI.
- số sê-ri của phiên bản, SIM hoặc USB.
Ai có thể truy cập ID thiết bị
ID thiết bị bị hạn chế trên tất cả các thiết bị Android 10, ngay cả khi các ứng dụng nhắm mục tiêu Android 9 trở xuống. ID thiết bị có thể được truy cập bởi
- Ứng dụng SMS mặc định.
- Các ứng dụng có cả quyền
READ_PRIVILEGED_PHONE_STATE
trong lớpManifest.permission
vàprivapp-permission.xml
. Chúng cũng phải được tải trong thư mụcpriv-app
. - Các ứng dụng có đặc quyền của nhà cung cấp dịch vụ như được định nghĩa trong Đặc quyền của nhà cung cấp dịch vụ UICC .
- Chủ sở hữu thiết bị hoặc chủ sở hữu hồ sơ được cấp quyền
READ_PHONE_STATE
trong lớpManifest.permission
. (Không bắt buộc phải cho phép.)
Quyền truy cập các gói đặc quyền
Một gói phải có đặc quyền để truy cập ID thiết bị. Nó phải có quyền READ_PRIVILEGED_PHONE_STATE
trong lớp Manifest.permission
và được phép liệt kê trong privapp-permission.xml
. Để biết thông tin về quy trình danh sách cho phép, hãy xem Cho phép quyền đặc quyền .
Để biết thông tin về cách nhận ID duy nhất cho gói không đặc quyền , hãy tham khảo Các trường hợp sử dụng phổ biến và số nhận dạng thích hợp để sử dụng .
ID thiết bị bị hạn chế và địa chỉ MAC ngẫu nhiên
Để hạn chế hơn nữa ID thiết bị, tất cả các thiết bị trên Android 10 đều truyền các địa chỉ MAC ngẫu nhiên theo mặc định cho cả yêu cầu thăm dò và các yêu cầu liên quan, đồng thời phải có một địa chỉ MAC ngẫu nhiên khác nhau cho mỗi SSID. Không sử dụng địa chỉ MAC của nhà sản xuất thiết bị ở chế độ khách, điểm truy cập mềm (AP) hoặc các trường hợp sử dụng Wi-Fi Direct. Nó phải được ẩn khỏi các API có thể truy cập công khai không phải là ứng dụng đặc quyền. Các ứng dụng đặc quyền yêu cầu trả lại địa chỉ MAC gốc bắt buộc phải có quyền LOCAL_MAC_ADDRESS
.
Người dùng có tùy chọn giữ địa chỉ MAC ngẫu nhiên mặc định được gán cho mỗi SSID. Bạn có thể xem tùy chọn này trong Quyền riêng tư trong Cài đặt > Chi tiết mạng . Để tìm hiểu về cách lấy địa chỉ MAC ngẫu nhiên, hãy xem Địa chỉ MAC ngẫu nhiên .

Ứng dụng gọi API ID thiết bị
Các ứng dụng gọi API ID thiết bị phải đáp ứng các yêu cầu của Android 10. Nếu không, khi họ cố gắng truy cập ID thiết bị, những thông tin sau sẽ được trả về:
- Ứng dụng nhắm mục tiêu Android 10
- Một
SecurityException
được đưa ra từ các API ID thiết bị. - Ứng dụng nhắm mục tiêu Android 9 trở xuống
- Nếu họ có quyền
READ_PHONE_STATE
, thì phản hồinull
hoặc dữ liệu trình giữ chỗ sẽ được trả về. - Nếu không, các API ID thiết bị sẽ ném ra một
SecurityException
chứa tên của phương thức được gọi và một dấu hiệu cho thấy ứng dụng gọi điện không đáp ứng các yêu cầu để truy cập vào ID được yêu cầu.
Để biết thêm về ID thiết bị không thể thay đổi, hãy xem Số nhận dạng thiết bị không thể đặt trước và các phương pháp hay nhất cho số nhận dạng duy nhất .
Thử nghiệm
Các ứng dụng phải bị ngăn chặn truy cập vào số sê-ri của thiết bị và IMEI / MEID, số sê-ri SIM và ID thuê bao, nếu có. Các ứng dụng có quyền truy cập các ID này cũng phải đáp ứng một trong các tiêu chí được liệt kê trong Ai có thể truy cập ID thiết bị .