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

标签 java android android-10.0

我注意到,在使用 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/

相关文章:

Java:如何使用数组

android - java.lang.OutOfMemoryError : bitmap size exceeds VM budget? 错误

java - Android 10 中没有适用于 Android 开发人员的 IMEI

java - 将字符串转换为整数时出现 NumberFormatException

android - ListViewAutoScrollHelper.canTargetScrollVertically处的NullPointerException(ListViewAutoScrollHelper.java:73)

android - 如何在 Android 10 中创建公用文件夹/文件

java - 在 Spring 中添加 Jaxb2 消息转换器打破了 Jackson2 json 映射

java - 如何处理ajax确认对话框是或否

java - WildFly9.0 - 添加Web服务访问

android - 启动 Activity 的小部件