Android调用getSimSerialNumber获取iccid不完整
时间: 2024-04-04 11:29:57 浏览: 148
可能是因为您的手机卡上的ICCID号码是19位数字,而getSimSerialNumber方法只返回了前15位数字。这是因为getSimSerialNumber方法返回的是SIM卡的序列号,而不是完整的ICCID号码。如果您需要获取完整的ICCID号码,可以尝试使用TelephonyManager的getSimInfo方法来获取。另外,请注意确保您的应用程序已经获得了READ_PHONE_STATE权限。
相关问题
android 获取iccid不全
可以使用TelephonyManager类的getSimSerialNumber()方法来获取ICCID(集成电路卡识别码),例如:
```java
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String iccid = telephonyManager.getSimSerialNumber();
```
但是,有些 Android 设备可能无法正确获取 ICICD 信息,或者只能获取到部分 ICICD 信息。这可能是由于设备的硬件或软件限制所致。在这种情况下,你可能需要考虑使用其他方法来获取 ICICD 信息,例如通过AT指令直接从SIM卡中读取ICCID,或者联系设备制造商以获取更好的解决方案。
android 7 获取iccid
你可以使用以下代码来获取Android 7设备上的ICCID:
```java
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
SubscriptionManager subscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
List<SubscriptionInfo> subscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList();
if (subscriptionInfoList != null) {
for (SubscriptionInfo subscriptionInfo : subscriptionInfoList) {
String iccId = subscriptionInfo.getIccId();
Log.d(TAG, "ICCID: " + iccId);
}
}
} else {
String iccId = telephonyManager.getSimSerialNumber();
Log.d(TAG, "ICCID: " + iccId);
}
```
这段代码中,我们首先获取了TelephonyManager实例,然后根据设备的Android版本来选择获取ICCID的方式。在Android 5.1以前的版本中,我们可以直接使用getSimSerialNumber()方法来获取ICCID。在Android 5.1以后的版本中,我们需要使用SubscriptionManager来获取订阅信息列表,然后从中获取ICCID。
阅读全文