偵測 eSIM 卡和 SIM 卡

搭載 SIM 卡和 eSIM 卡的 Android 裝置會在電話 API (包括 TelephonyManagerSubscriptionManager) 中使用下列 ID:

  • 訂閱項目 ID:行動訂閱項目的專屬 ID。
  • 邏輯運算單元索引或 ID:參照邏輯 SIM 卡插槽的專屬索引。 邏輯運算單元 ID 從 0 開始,然後依據裝置上支援的有效運算單元數量增加。舉例來說,雙 SIM 卡裝置通常具備運算單元 0 和運算單元 1。如果裝置有多個實體運算單元,但僅支援一個有效運算單元,則裝置只會使用邏輯運算單元 ID 0。
  • 實體運算單元索引或 ID:參照實體 SIM 卡插槽的專屬索引。 實體運算單元 ID 會從 0 開始,然後依據裝置上的實體運算單元數量增加。這與裝置擁有的邏輯運算單元數量不同,後者是對應裝置可使用的運算單元數量。舉例來說,一個在雙 SIM 卡和單一 SIM 卡模式之間切換的裝置可能會有兩個實體運算單元,但單一 SIM 卡模式只會有一個邏輯運算單元。
  • 卡片 ID:用於識別 UiccCard 的專屬 ID。

案件中有兩個邏輯運算單元和三個實體運算單元時的 ID 使用方式圖表

在上圖中:

  • 裝置有兩個邏輯版位。
  • 實體版位 0 中有實體 UICC 資訊卡,其中包含有效的設定檔。
  • 實體運算單元 2 中是具備有效設定檔的 eUICC。
  • 目前未使用實體運算單元 1。

案例用示意圖:有三個邏輯運算單元和兩個實體運算單元。

在上圖中:

  • 裝置有三個邏輯插槽。
  • 實體版位 0 中有實體 UICC 資訊卡,其中包含有效的設定檔。
  • 實體運算單元 1 是包含兩個已下載的設定檔的 eUICC,皆使用 MEP (多個啟用的設定檔) 處於啟用狀態。

Open Mobile API (OMAPI) 讀取器支援

在 Android 11 以上版本中,Open Mobile API (OMAPI) 支援在含有下列標記的裝置上,檢查 eSE、SD 和 UICC 支援硬體:

使用這些值搭配 getSystemAvailableFeatures()hasSystemFeature(),即可檢查裝置是否支援。