Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

不可變的設備ID

在Android 6及更高版本中,限制了Wi-Fi服務提供商和數據包分析器通過網絡請求通過Wi-Fi堆棧檢索設備的工廠MAC地址。從Android 10開始,附加的限制將限制具有特權 權限級別的應用對設備標識符(ID)的訪問。這樣可以保護設備ID,例如

  • 電話IMEI,MEID,ESN和IMSI號碼。
  • 內部版本號,SIM卡或USB序列號。

誰可以訪問設備ID

設備ID在所有Android 10設備上都受到限制,即使應用程序定位到Android 9或更低版本也是如此。可以通過以下方式訪問設備ID

特權包訪問

必須授予程序包訪問設備ID的特權。它必須在Manifest.permission類中具有READ_PRIVILEGED_PHONE_STATE權限,並且必須在privapp-permission.xml文件中列入白名單。有關白名單過程的信息,請參閱特權權限白名單

有關獲取非特權軟件包的唯一ID的信息,請參閱“ 常見用例”和要使用的適當標識符

受限設備ID和隨機MAC地址

為了進一步限制設備ID,默認情況下,Android 10上的所有設備都會為探測請求和相關請求傳輸隨機MAC地址,並且每個SSID必須具有不同的隨機MAC地址。不要在客戶端模式,軟訪問點(AP)或Wi-Fi Direct用例中使用設備的工廠MAC地址。它必須對不是特權應用程序的可公開訪問的API保持隱藏狀態。需要返回工廠MAC地址的特權應用必須具有LOCAL_MAC_ADDRESS權限。

用戶可以選擇保留分配給每個SSID的默認隨機 MAC地址。在“設置” >“ 網絡詳細信息”中的 隱私 下可以查看該選項。要了解有關獲取隨機MAC地址的信息,請參閱隨機MAC地址

Screen shows if device ID uses a randomized MAC address for privacy
圖1. MAC地址在“ 網絡詳細信息”中的“ 隱私”下顯示為隨機

調用設備ID API的應用

調用設備ID API的應用必須符合Android 10要求。否則,當他們嘗試訪問設備ID時,將返回以下內容:

  • 面向Android 10的應用
  • 定位到Android 9或更早版本的應用
    • 如果它們具有READ_PHONE_STATE權限,則返回null響應或占位符數據。
    • 如果不是,則設備ID API會引發SecurityException ,其中包含被調用方法的名稱,並指示調用應用程序不符合訪問請求的ID的要求。

有關不可變設備ID的更多信息,請參見不可重置設備標識符唯一標識符的最佳做法

測試中

必須禁止應用訪問​​設備序列號以及IMEI / MEID,SIM序列號和訂戶ID(如果適用)。有權訪問這些ID的應用還必須滿足“ 誰可以訪問設備ID”下列出的條件之一。