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 null
或 placeholder
数据,即使应用拥有 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 时测试它的设备)。
我了解到 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 null
或 placeholder
数据,即使应用拥有 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 时测试它的设备)。