从Android 10开始,应用程序无法直接访问设备标识符(如IMEI和序列号)或设备ID,除非应用程序具有特定的权限。这是出于用户隐私和安全方面的考虑。如果你尝试在没有权限的情况下获取设备ID,你将会收到一个安全异常。
然而,你仍然可以获取设备ID的替代值,如Android ID。Android ID是一个64位的十六进制字符串,用作设备的唯一标识符,但它并不是永久的,因此不适合用于长期跟踪设备。要获取Android ID,你可以使用以下代码:
String androidId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
需要注意的是,Android ID并不是一个完全可靠的设备标识符,因为它可以在设备恢复出厂设置或者刷机的情况下发生变化。如果你需要一个持久的设备标识符,最好考虑使用广告标识符(Advertising ID)或自定义的标识符,并在用户同意的情况下收集和使用这些标识符。