TelephonyManager.getDeviceId(0)返回不同设备的混淆结果

时间:2019-04-23 07:58:12

标签: android telephonymanager deviceid

我正在使用TelephonyManager.getDeviceId(0)来获取设备imei的第一个SIM卡插槽。但是在我看来,它不会每次都返回我的第一个插槽IMEI。我有两个带有两个SIM卡插槽但未连接SIM卡的手机。

  1. Symphony i10 +,API 24-返回第一个SIM卡插槽Imei。
  2. Huawei CAM L21,API 23-返回第二个SIM卡插槽imei。

这是我的代码:-

public static String getDeviceId(Context context) {
    String deviceId = DEVICE_ID;
    if (!Validator.isValid(deviceId)) {
        try {
            TelephonyManager tManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    deviceId = tManager.getImei(0);
                } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    deviceId = tManager.getDeviceId(0);
                } else {
                    deviceId = tManager.getDeviceId();
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
            try {
                deviceId = Settings.Secure.getString(context.getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
        DEVICE_ID = deviceId;
    }
    return deviceId;
}

为消除这种混乱,我删除了类似-

的slot index方法
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    deviceId = tManager.getDeviceId();
                }

然后它在两个手机上都给了我第一个SIM卡插槽IMEI。但是在这种情况下调用getDeviceId()是正确的,每次都会返回我的第一个时隙IMEI吗?

不过我已经读过TelephonyManager.getDeviceId(0) returns different results这篇帖子。

0 个答案:

没有答案