Detectar eSIMs e chips

Dispositivos Android com chips e eSIMs usam os seguintes IDs nas APIs de telefonia, incluindo TelephonyManager e SubscriptionManager:

  • Código de assinatura: código exclusivo para a assinatura de um dispositivo móvel.
  • Índice ou ID de slot lógico: índice exclusivo que se refere a um slot de chip lógico. Os IDs de slot lógicos começam em 0 e aumentam de acordo com o número de slots ativos com suporte em um dispositivo. Por exemplo, um dispositivo com dois chips normalmente tem slots 0 e 1. Se um dispositivo tiver vários slots físicos, mas oferecer suporte a apenas um slot ativo, ele terá apenas o ID de slot lógico 0.
  • Índice ou ID do slot físico: índice exclusivo que se refere a um slot para chip físico. Os IDs de slot físico começam em 0 e aumentam de acordo com o número de slots físicos no dispositivo. Isso é diferente do número de slots lógicos que um dispositivo tem, que corresponde ao número de slots ativos que um dispositivo pode usar. Por exemplo, um dispositivo que alterna entre os modos dual chip e único chip pode sempre ter dois slots físicos, mas no modo de chip único terá apenas um slot lógico.
  • Código do cartão: código exclusivo para identificar um UiccCard.

Um diagrama de como os IDs são usados em um caso com dois slots lógicos e três slots físicos

No diagrama anterior:

  • O dispositivo tem dois slots lógicos.
  • No slot físico 0, há um card UICC físico com um perfil ativo.
  • No slot físico 2, há um eUICC com um perfil ativo.
  • O slot físico 1 não está em uso no momento.

Um diagrama de como os IDs são usados em um caso com três slots lógicos e dois slots físicos

No diagrama anterior:

  • O dispositivo tem três slots lógicos.
  • No slot físico 0, há um card UICC físico com um perfil ativo.
  • No slot físico 1, há um eUICC com dois perfis transferidos por download, ambos ativos usando o MEP (Vários perfis ativados).

Compatibilidade com o leitor da API Open Mobile (OMAPI)

No Android 11 e versões mais recentes, a API Open Mobile (OMAPI) oferece suporte à verificação de suporte a hardware de eSE, SD e UICC em dispositivos com as seguintes flags:

Use esses valores com getSystemAvailableFeatures() ou hasSystemFeature() para verificar o suporte ao dispositivo.