gpt4 book ai didi

java - 如何在 Android SDK API 级别 29 或更高版本中获取 IMSI 号码?

转载 作者:行者123 更新时间:2023-12-01 23:53:11 43 4
gpt4 key购买 nike

我注意到,在使用 Android 10/Q 设备时,我无法使用 TelephonyManager 获取 IMSI 号码,

TelephonyManager tel = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

String imsiNo = tel.getSubscriberId();

i 将始终获得 imsiNo 变量的空值,但在 Android SDK API 级别 28 或更低级别中,它将始终返回 imsi 值。

我已确保启用 READ_PHONE_STATE 权限,但在 Android 10/Q 中它将无法获取 imsi 号码。 Android 10/Q 或更高版本是否可以获取 IMSI 号码?

最佳答案

我正在使用以下代码在 android > Q 中获取 IMSI

private String getImsiFromSubscriptionManager() {
String simSerialNo = "";
try {
SubscriptionManager subsManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
List<SubscriptionInfo> subsList = subsManager.getActiveSubscriptionInfoList();

if (subsList != null) {
for (SubscriptionInfo subsInfo : subsList) {
if (subsInfo != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
simSerialNo = subsInfo.getMccString() + subsInfo.getMncString() + subsInfo.getIccId().substring(8, 18);
}
Utility.DEBUG_LOG(TAG,"imsiNumber:"+simSerialNo);
}
}
} else {
simSerialNo = "WiFi";
Utility.DEBUG_LOG(TAG,"imsiNumber:"+simSerialNo);
}
}
} catch (Exception e) {
e.printStackTrace();
}


if(simSerialNo.isEmpty())
simSerialNo = "N/A";

return simSerialNo;
}

关于java - 如何在 Android SDK API 级别 29 或更高版本中获取 IMSI 号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58213606/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com