android如何正确获取iccid,特别是中间带有字母的iccid
在android设备上面获取sim卡的iccid,相信很多开发者都能很容易做到,网上也有大量的获取方法,99%的写法都和下面一样
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
iccid = tm.getSimSerialNumber();
还有另外一个方法,可以指定获取卡槽对应的的iccid,该方法只有在sdk level不小于22的时候才能用
SubscriptionInfo info = SubscriptionManager.from(context).getActiveSubscriptionInfoForSimSlotIndex(DEFAULT_SLOT_INDEX);
if (info != null)
{
iccid = info.getIccId();
}
在正常情况下,上面两个方法是有效的,没有问题,为什么说正常情况下有效呢,是因为上述方法只能获取到十进制表示的iccid字符串,上面的本质上调用的com.android.internal.telephony.Phone.getIccSerialNumber(),该方法源码如下:
/**
* Retrieves the serial number of the ICC, if applicable. Returns o