android如何正确获取iccid,特别是中间带有字母的iccid

android如何正确获取iccid,特别是中间带有字母的iccid

在android设备上面获取sim卡的iccid,相信很多开发者都能很容易做到,网上也有大量的获取方法,99%的写法都和下面一样

 

TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
iccid = tm.getSimSerialNumber();

在正常情况下,上面的方法是有效的,没有问题。本文再提供一个方法供参考,该方法只有在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 only the decimal digits before
 * the first hex digit in the ICC ID.
 */
public String getIccSerialNumber() {
    IccRecords

你可能感兴趣的:(android如何正确获取iccid,特别是中间带有字母的iccid)