分享

Android设备ID获取方案

 创始元灵6666 2022-08-03 发布于河北

从Android 10开始已经无法完全标识一个设备,曾经用mac地址、IMEI等设备信息标识设备的方法,从Android 10开始统统失效。而且无论你的APP是否适配过Android 10。

1 IMEI等设备信息

       从Android10开始普通应用不再允许请求权限android.permission.READ_PHONE_STATE。而且,无论你的App是否适配过Android Q(既targetSdkVersion是否大于等于29),均无法再获取到设备IMEI等设备信息。

受影响的API:

Build.getSerial();
TelephonyManager.getImei();
TelephonyManager.getMeid();
TelephonyManager.getDeviceId();
TelephonyManager.getSubscriberId();
TelephonyManager.getSimSerialNumber();
复制代码
  • targetSdkVersion<29 的应用,其在获取设备ID时,会直接返回null

  • targetSdkVersion>=29 的应用,其在获取设备ID时,会直接抛出异常SecurityException

如果您的App希望在Android 10以下的设备中仍然获取设备IMEI等信息,可按以下方式进行适配:

<uses-permission android:name="android.permission.READ_PHONE_STATE"      
  android:maxSdkVersion="28"/>
复制代码

2 Mac地址随机分配

      从Android10开始,默认情况下,在搭载 Android 10 或更高版本的设备上,系统会传输随机分配的 MAC 地址。(即从Android 10开始,普通应用已经无法获取设备的真正mac地址,标识设备已经无法使用mac地址)

3 如何标识设备唯一性

3.1 Google解决方案:如果您的应用有追踪非登录用户的需求,可用ANDROID_ID来标识设备。

  • ANDROID_ID生成规则:签名+设备信息+设备用户

  • ANDROID_ID重置规则:设备恢复出厂设置时,ANDROID_ID将被重置

    String androidId = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);

3.2 信通院统一SDK(OAID)不建议用

MSA 统一 SDK 下载地址:

移动安全联盟官网,www./

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多