Android 10 中的 IMEI 隐私更改

Privacy changes in Android 10 for IMEI

我了解到 Android 10 的隐私更改,我很清楚第三方应用现在无法获取 IMEI。 但是 documentation 的一件事让我感到困惑。

他们说

If your app targets Android 9 (API level 28) or lower, the method returns null or placeholder data if the app has the READ_PHONE_STATE permission. Otherwise, a SecurityException occurs.

这意味着在 API 级别为 API 或更低级别的 Android 设备上,此方法 returns nullplaceholder 数据,即使应用拥有 READ_PHONE_STATE 权限。对吗?

但是我已经在我的应用程序上针对 API LEVEL 28 测试了这个东西,我仍然可以通过以下方式获得 IMEI number

if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
            fragment.requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_CODE);
 }
 TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
 String deviceId = telephonyManager.getImei();

它不应该给我发送 NULL 或占位符(垃圾)数据吗?

有什么想法吗?还是我误解了它?

你误解了它。文档说的是:

If your application targets Android 9 (API level 28) or lower, then it will return null or placeholder data when running on Android 10 device.

文档在这里描述了它在 Android 10 上的行为方式,以防您不以 Android 10 为目标。即使没有更新,应用程序也不会突然以奇怪的方式中断。它对 Android 9 台设备(以及模拟 Android 9 台设备的模拟器没有影响,这可能是您在针对 API 级别 28 时测试它的设备)。