检测 eSIM 卡和 SIM 卡

装有 SIM 卡和 eSIM 卡的 Android 设备在电话 API 中使用以下 ID,包括 TelephonyManagerSubscriptionManager

  • 订阅 ID:移动订阅的唯一 ID。
  • 逻辑插槽索引或 ID:指向逻辑 SIM 卡插槽的唯一索引。逻辑插槽 ID 从 0 开始,并且根据设备上支持的活跃插槽数量而增加。例如,双 SIM 卡设备通常具有插槽 0 和插槽 1。如果设备具有多个实体槽位,但仅支持一个活动槽位,则其逻辑槽位 ID 仅为 0。
  • 实体插槽索引或 ID:引用实体 SIM 卡插槽的唯一索引。实体插槽 ID 从 0 开始,并且根据设备上的物理插槽数量而增加。这不同于设备的逻辑插槽数量,后者对应的是设备能够使用的活动插槽数量。例如,在双 SIM 卡模式和单 SIM 卡模式之间切换的设备可能始终具有两个实体插槽,但在单 SIM 卡模式下,它只有一个逻辑插槽。
  • 卡 ID:用于识别 UiccCard 的唯一 ID。

在具有 2 个逻辑槽和 3 个实体槽的案例中,ID 的使用方式示意图

在上图中:

  • 该设备有两个逻辑插槽。
  • 实体插槽 0 中有一个具有有效配置文件的实体 UICC 卡。
  • 实体插槽 2 中是一个具有有效配置文件的 eUICC。
  • 实体插槽 1 当前未在使用。

包含三个逻辑插槽和两个实体插槽的案例中 ID 的使用方式示意图

在上图中:

  • 该设备有三个逻辑插槽。
  • 实体插槽 0 中有一个具有有效配置文件的实体 UICC 卡。
  • 实体插槽 1 中是一个具有两个已下载配置文件的 eUICC,两个配置文件都使用 MEP(多个已启用的配置文件)处于活动状态。

Open Mobile API (OMAPI) 读取器支持

在 Android 11 及更高版本中,Open Mobile API (OMAPI) 支持在带有以下标志的设备上检查 eSE、SD 和 UICC 支持硬件:

将这些值与 getSystemAvailableFeatures()hasSystemFeature() 结合使用,可检查设备是否支持。