赞
踩
使用
全局build.gradle中
- allprojects {
- repositories {
- maven { url 'https://www.jitpack.io' }
- }
- }
app build.gradle中
api 'com.github.gzu-liyujiang:Android_CN_OAID:4.2.4'
- // 在`Application#onCreate`里初始化,注意APP合规性,若最终用户未同意隐私政策则不要调用
- @Override
- public void onCreate() {
- super.onCreate();
- if (privacyPolicyAgreed) {
- DeviceIdentifier.register(this);
- }
- }
获取方法
- // 获取IMEI,只支持Android 10之前的系统,需要READ_PHONE_STATE权限,可能为空
- DeviceIdentifier.getIMEI(this);
- // 获取安卓ID,可能为空
- DeviceIdentifier.getAndroidID(this);
- // 获取数字版权管理ID,可能为空
- DeviceIdentifier.getWidevineID();
- // 获取伪造ID,根据硬件信息生成,不会为空,有大概率会重复
- DeviceIdentifier.getPseudoID();
- // 获取GUID,随机生成,不会为空
- DeviceIdentifier.getGUID(this);
- // 是否支持OAID/AAID
- DeviceID.supportedOAID(this);
- // 获取OAID/AAID,同步调用
- DeviceIdentifier.getOAID(this);
- // 获取OAID/AAID,异步回调
- DeviceID.getOAID(this, new IGetter() {
- @Override
- public void onOAIDGetComplete(String result) {
- // 不同厂商的OAID/AAID格式是不一样的,可进行MD5、SHA1之类的哈希运算统一
- }
-
- @Override
- public void onOAIDGetError(Exception error) {
- // 获取OAID/AAID失败
- }
- });

混淆规则
- -keep class repeackage.com.uodis.opendevice.aidl.** { *; }
- -keep interface repeackage.com.uodis.opendevice.aidl.** { *; }
- -keep class repeackage.com.asus.msa.SupplementaryDID.** { *; }
- -keep interface repeackage.com.asus.msa.SupplementaryDID.** { *; }
- -keep class repeackage.com.bun.lib.** { *; }
- -keep interface repeackage.com.bun.lib.** { *; }
- -keep class repeackage.com.heytap.openid.** { *; }
- -keep interface repeackage.com.heytap.openid.** { *; }
- -keep class repeackage.com.samsung.android.deviceidservice.** { *; }
- -keep interface repeackage.com.samsung.android.deviceidservice.** { *; }
- -keep class repeackage.com.zui.deviceidservice.** { *; }
- -keep interface repeackage.com.zui.deviceidservice.** { *; }
- -keep class repeackage.com.coolpad.deviceidsupport.** { *; }
- -keep interface repeackage.com.coolpad.deviceidsupport.** { *; }
- -keep class repeackage.com.android.creator.** { *; }
- -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
我简单封装了一下 需要可以用我封装好的
- //获取安卓ID,可能为空
- fun getAndroidId(context: Context): String? {
- return DeviceIdentifier.getAndroidID(context);
- }
-
- //获取IMEI,只支持Android 10之前的系统,需要READ_PHONE_STATE权限,可能为空
- fun getImei(context: Context): String {
- return DeviceIdentifier.getIMEI(context);
- }
-
- /**
- * 获取设备唯一ID
- */
- fun getUniqueDeviceId(context: Context): String {
- //oaid
- val supportedOAID = DeviceID.supportedOAID(context);
- if(supportedOAID){
- // 获取OAID/AAID,同步调用
- val oaid = DeviceIdentifier.getOAID(context);
- return oaid
- }
- //android Id
- val androidId = getAndroidId(context);
- if (!TextUtils.isEmpty(androidId)) {
- return androidId!!;
- }
- // 获取数字版权管理ID,可能为空
- val widevineID = DeviceIdentifier.getWidevineID();
- if (!TextUtils.isEmpty(widevineID)) {
- return widevineID!!;
- }
- // 获取伪造ID,根据硬件信息生成,不会为空,有大概率会重复
- val pseudoID = DeviceIdentifier.getPseudoID();
- if (!TextUtils.isEmpty(pseudoID)) {
- return pseudoID!!;
- }
- //串号
- val imei = getImei(context)
- if (!TextUtils.isEmpty(imei)) {
- return imei;
- }
- return "";
-
- }
- // 获取GUID,随机生成,不会为空 不会重复
- private fun getGuid(context: Context): String? {
- val guid = DeviceIdentifier.getGUID(context);
- return guid
- }
- // 获取UUID,随机生成,不会为空 不会重复
- private fun getUUID(context: Context): String {
- val uniqueID: String = UUID.randomUUID().toString()
- return uniqueID
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。