当前位置:   article > 正文

Android 获取唯一Id_com.asus.msa.supplementarydid.ididaidlinterface

com.asus.msa.supplementarydid.ididaidlinterface

git:GitHub - gzu-liyujiang/Android_CN_OAID: 安卓设备唯一标识解决方案,可完全替代移动安全联盟统一 SDK 闭源方案。包括国内手机厂商的开放匿名标识(OAID)、海外手机平台的安卓广告标识(AAID),另外也提供了 IMEI/MEID、AndroidID、WidevineID、PseudoID、GUID 等常见的设备标识的获取方法。

 使用

全局build.gradle中

  1. allprojects {
  2. repositories {
  3. maven { url 'https://www.jitpack.io' }
  4. }
  5. }

 app build.gradle中

    api 'com.github.gzu-liyujiang:Android_CN_OAID:4.2.4'
  1. // 在`Application#onCreate`里初始化,注意APP合规性,若最终用户未同意隐私政策则不要调用
  2. @Override
  3. public void onCreate() {
  4. super.onCreate();
  5. if (privacyPolicyAgreed) {
  6. DeviceIdentifier.register(this);
  7. }
  8. }

获取方法

  1. // 获取IMEI,只支持Android 10之前的系统,需要READ_PHONE_STATE权限,可能为空
  2. DeviceIdentifier.getIMEI(this);
  3. // 获取安卓ID,可能为空
  4. DeviceIdentifier.getAndroidID(this);
  5. // 获取数字版权管理ID,可能为空
  6. DeviceIdentifier.getWidevineID();
  7. // 获取伪造ID,根据硬件信息生成,不会为空,有大概率会重复
  8. DeviceIdentifier.getPseudoID();
  9. // 获取GUID,随机生成,不会为空
  10. DeviceIdentifier.getGUID(this);
  11. // 是否支持OAID/AAID
  12. DeviceID.supportedOAID(this);
  13. // 获取OAID/AAID,同步调用
  14. DeviceIdentifier.getOAID(this);
  15. // 获取OAID/AAID,异步回调
  16. DeviceID.getOAID(this, new IGetter() {
  17. @Override
  18. public void onOAIDGetComplete(String result) {
  19. // 不同厂商的OAID/AAID格式是不一样的,可进行MD5、SHA1之类的哈希运算统一
  20. }
  21. @Override
  22. public void onOAIDGetError(Exception error) {
  23. // 获取OAID/AAID失败
  24. }
  25. });

混淆规则

  1. -keep class repeackage.com.uodis.opendevice.aidl.** { *; }
  2. -keep interface repeackage.com.uodis.opendevice.aidl.** { *; }
  3. -keep class repeackage.com.asus.msa.SupplementaryDID.** { *; }
  4. -keep interface repeackage.com.asus.msa.SupplementaryDID.** { *; }
  5. -keep class repeackage.com.bun.lib.** { *; }
  6. -keep interface repeackage.com.bun.lib.** { *; }
  7. -keep class repeackage.com.heytap.openid.** { *; }
  8. -keep interface repeackage.com.heytap.openid.** { *; }
  9. -keep class repeackage.com.samsung.android.deviceidservice.** { *; }
  10. -keep interface repeackage.com.samsung.android.deviceidservice.** { *; }
  11. -keep class repeackage.com.zui.deviceidservice.** { *; }
  12. -keep interface repeackage.com.zui.deviceidservice.** { *; }
  13. -keep class repeackage.com.coolpad.deviceidsupport.** { *; }
  14. -keep interface repeackage.com.coolpad.deviceidsupport.** { *; }
  15. -keep class repeackage.com.android.creator.** { *; }
  16. -keep interface repeackage.com.android.creator.** { *; }

支持情况

厂商或品牌系统或框架
华为(Huawei、Honor)HMS Core 2.6.2+ 、Google Play Service 4.0+
小米(XiaoMi、Redmi、BlackShark)MIUI 10.2+、Google Play Service 4.0+
维沃(VIVO、IQOO)Funtouch OS 9+、OriginOS 1.0+、Google Play Service 4.0+
欧珀(OPPO、Realme)ColorOS 7.0+、Google Play Service 4.0+
三星(Samsung)Android 10+、Google Play Service 4.0+
联想(Lenovo)ZUI 11.4+、Google Play Service 4.0+
华硕(ASUS)Android 10+、Google Play Service 4.0+
魅族(Meizu)Android 10+、Google Play Service 4.0+
一加(OnePlus)Android 10+、Google Play Service 4.0+
努比亚(Nubia)Android 10+、Google Play Service 4.0+
酷派(Coolpad)CoolOS、Google Play Service 4.0+
酷赛(Coosea )Android 10+、Google Play Service 4.0+
卓易(Droi )Freeme OS、Google Play Service 4.0+
其他(ZTE、HTC、Motorola、……)SSUI、Google Play Service 4.0+

 OAID(开放匿名设备标识符)

 

其他手机请残照 上面网址的下方readMe

 我简单封装了一下 需要可以用我封装好的

  1. //获取安卓ID,可能为空
  2. fun getAndroidId(context: Context): String? {
  3. return DeviceIdentifier.getAndroidID(context);
  4. }
  5. //获取IMEI,只支持Android 10之前的系统,需要READ_PHONE_STATE权限,可能为空
  6. fun getImei(context: Context): String {
  7. return DeviceIdentifier.getIMEI(context);
  8. }
  9. /**
  10. * 获取设备唯一ID
  11. */
  12. fun getUniqueDeviceId(context: Context): String {
  13. //oaid
  14. val supportedOAID = DeviceID.supportedOAID(context);
  15. if(supportedOAID){
  16. // 获取OAID/AAID,同步调用
  17. val oaid = DeviceIdentifier.getOAID(context);
  18. return oaid
  19. }
  20. //android Id
  21. val androidId = getAndroidId(context);
  22. if (!TextUtils.isEmpty(androidId)) {
  23. return androidId!!;
  24. }
  25. // 获取数字版权管理ID,可能为空
  26. val widevineID = DeviceIdentifier.getWidevineID();
  27. if (!TextUtils.isEmpty(widevineID)) {
  28. return widevineID!!;
  29. }
  30. // 获取伪造ID,根据硬件信息生成,不会为空,有大概率会重复
  31. val pseudoID = DeviceIdentifier.getPseudoID();
  32. if (!TextUtils.isEmpty(pseudoID)) {
  33. return pseudoID!!;
  34. }
  35. //串号
  36. val imei = getImei(context)
  37. if (!TextUtils.isEmpty(imei)) {
  38. return imei;
  39. }
  40. return "";
  41. }
  42. // 获取GUID,随机生成,不会为空 不会重复
  43. private fun getGuid(context: Context): String? {
  44. val guid = DeviceIdentifier.getGUID(context);
  45. return guid
  46. }
  47. // 获取UUID,随机生成,不会为空 不会重复
  48. private fun getUUID(context: Context): String {
  49. val uniqueID: String = UUID.randomUUID().toString()
  50. return uniqueID
  51. }
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/969965
推荐阅读
相关标签
  

闽ICP备14008679号