我怎样才能获得手机的ICCID号码?

Ale*_*xei 5 android

我怎样才能获得手机的ICCID号码?

我查看了TelephonyManager类,但没有找到获取ICCID编号​​的方法,只有一种方法可以告诉ICC卡是否存在.

Ree*_*eed 11

我相信getSimSerialNumber()会变得胆怯.

  • 我的理解是SIM序列号和ICCID是一样的东西. (2认同)

and*_*per 5

最好不要使用它,因为这是最近受到限制的标识符之一,就像最近在 Android 10 上所做的一样。

在 Android 11 (API 30) 上,即使您不以它为目标,也很可能只会得到一个空字符串。

推荐什么就用是getSubscriptionId代替(需要READ_PHONE_STATE权限)。

原因

返回ICC ID。从 API 级别 30 开始,如果调用应用程序已被授予 READ_PRIVILEGED_PHONE_STATE 权限、具有运营商权限(请参阅 TelephonyManager#hasCarrierPrivileges),或者是已被授予 READ_PHONE_STATE 权限的设备所有者或配置文件所有者,则返回 ICC ID。个人资料所有者是在设备上拥有受管理个人资料的应用程序;有关更多详细信息,请参阅工作资料。个人资料所有者访问权限已弃用,并将在未来版本中删除。

所以它返回“ICC ID,如果不满足这些要求之一,则返回空字符串”。对于第三方应用程序,这意味着您可能总是得到一个空字符串。

如果你不满足这些(你通常不满足),你可以使用它。

final SubscriptionManager subscriptionManager = SubscriptionManager.from(context);
final List<SubscriptionInfo> activeSubscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList();
Run Code Online (Sandbox Code Playgroud)

然后对于它们中的每一个,您都可以使用subscriptionInfo.getIccId().