Trong Android 6 trở lên, nhà cung cấp dịch vụ Wi-Fi và máy phân tích gói đã bị hạn chế truy xuất địa chỉ MAC gốc 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 giới hạn 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ệ ID thiết bị như
- số điện thoại IMEI, MEID, ESN và IMSI.
- số sê-ri bản dựng, 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 ứ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à đưa vào danh sách cho phép trong tệpprivapp-permission.xml
. Những thứ này cũng phải được tải trong thư mụcpriv-app
. - Ứng dụng có đặc quyền của nhà cung cấp dịch vụ như được xác định 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ó quyền
READ_PHONE_STATE
được cấp trong lớpManifest.permission
. (Không cần phải đưa vào danh sách cho phép.)
Quyền truy cập các gói đặc quyền
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 đưa vào danh sách cho phép trong tệp privapp-permission.xml
. Để biết thông tin về quy trình đưa vào danh sách cho phép, hãy xem Danh sách cho phép có 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ó đặc quyền , hãy tham khảo Các trường hợp sử dụng phổ biến và mã định danh 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ị, theo mặc định, tất cả các thiết bị trên Android 10 đều truyền địa chỉ MAC ngẫu nhiên cho cả yêu cầu thăm dò và yêu cầu liên quan, đồng thời phải có đị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ị trong chế độ máy 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. Tùy chọn này có thể xem được trong Bảo mậ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. Mặt khác, khi họ cố gắng truy cập ID thiết bị, thông tin sau sẽ được trả về:
- Ứng dụng nhắm mục tiêu Android 10
-
SecurityException
được đưa ra từ 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 giữ chỗ sẽ được trả về. - Nếu không, API ID thiết bị sẽ đưa ra
SecurityException
chứa tên của phương thức được gọi và 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 ID được yêu cầu.
Để biết thêm về ID thiết bị bất biến, hãy xem Mã nhận dạng thiết bị không thể đặt lại và các phương pháp hay nhất cho mã nhận dạng duy nhất .
Kiểm tra
Các ứng dụng phải được 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ị .