订阅 ID 在 Android 中会保留多长时间?

How long does a Subscription ID stick around in Android?

从 API 级别 22 开始,Android 为双卡双待设备提供原生支持。在 API 的中心,有 SubscriptionInfo.getSubscriptionId().

使用这些 ID,您可以为每张 SIM 卡检索 SmsManagers 以发送短信和彩信。您还可以识别通过哪个 SIM 卡在 SMS_RECEIVED_ACTION 上接收到短信,等等。

但是,订阅 ID 的生命周期是多长?我可以将订阅 ID 存储在本地数据库中并指望它仍然有效并在以后指向同一张 SIM 卡吗?稍后,我的意思是在重新启动设备、取出 SIM 卡并重新插入后,甚至在恢复出厂设置后。

我自己测试了 SubscriptionId 的弹性,使用两张 SIM 卡,虽然是在单 SIM 卡设备上,因为那是我当时可用的。

首先,我注意到 SubscriptionId 当插入 SIM 卡 A 时系统给我。我得到的 SubscriptionId 的值为 2.

接下来,我重新启动了设备。重启后的SubscriptionId还是2.

然后,我关闭了设备,取出SIM卡A并插入SIM卡B。重新打开设备后,SubscriptionId变为4

最后,我关闭了设备,取出 SIM 卡 B 并将 SIM 卡 A 放回原处。重新打开设备后,SubscriptionId 变回 2

总之,Android 似乎为每张 SIM 卡分配了唯一的 SubscriptionIdSubscriptionId 似乎在系统重启、SIM 卡移除和重新插入后仍然存在。我没有测试恢复出厂设置,但我的直觉是它可能无法生存,因为在恢复出厂设置后系统不会有任何与 SIM 卡交互的历史记录。