最好不要使用它,因为这是最近受到限制的标识符之一,就像最近在 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().
| 归档时间: |
|
| 查看次数: |
35736 次 |
| 最近记录: |