简介

本文链接:https://www.cnblogs.com/dks-/p/14357041.html

根据“移动智能终端补充设备标识体系”技术要求,华为、小米、OPPO、vivo、中兴、努比亚、魅族、联想、三星等设备厂商均将逐步实现本标识体系,联盟计划开发并发布支持多厂商的统一的补充设备标识调用SDK,协助移动应用开发者更便捷的访问移动智能终端补充设备标识体系,推进相关业务。

OAID全称匿名设备标识符(Open Anonymous Device Identifier),是可以连接所有应用数据的标识符。在移动终端系统首次启动后立即生成,可用于广告业务,其生成参数中可包含设备唯一标识符参数。

IMEI属于个人隐私,现在已无法获取IMEI,因此需要使用OAID来替代。本文将使用MSA提供的最新版SDK 1.0.25(截至发文2021-02-01)

SDK下载

这里直接给出某位大佬在github上分享的资源https://github.com/2tu/msa我之前也是找了很久,感谢这位大佬。

oaid_sdk_1.0.25.zip度盘链接https://pan.baidu.com/s/1sVzBD_3mTXD_oqyu5I2VtQ 提取码:we54

官网下载需要以公司名义注册并且需要进行审核,比较麻烦,网上找的SDK下载竟然还需要收费。

官网:移动安全联盟MSA

支持版本

厂商名称 支持版本
华为 HMS 2.6.2 及以上
小米 MIUI 10.2 及以上版本
vivo Android 9 及以上版本
OPPO Color OS 7.0 及以上版本
Lenovo ZUI 11.4 及以上版本
三星 Android 10 版本
魅族 Android 10 版本
努比亚 Android 10 版本
中兴 Android 10 版本
华硕 Android 10 版本
一加 Android 10 版本
黑鲨 Android 10 版本
摩托罗拉 Android 10 版本
Freeme OS Android 10 版本

开始使用

一定要使用最新版!

一定要使用最新版!

一定要使用最新版!

我最开始是用的老版本,碰到了很多问题,MSA一直在完善SDK,所以请务必使用最新版!

这个版本我在安卓11的小米上测试正常

把 oaid_sdk_1.0.25.aar 拷贝到项的 libs 目录,并设置依赖。

implementation files('libs/oaid_sdk_1.0.25.aar')

将supplierconfig.json 拷贝到项目 assets 目录下,并修改 边对应内容,特别是需要设置 appid 的部分。需要设置 appid 的部分需要去对应厂商的应用商店注册自己的 app。需要注意的是,其中 label 部分内容无需修改。



核心代码,从官方给的demo里拿的

public class MainActivity extends AppCompatActivity implements IIdentifierListener {
private TextView tvContent;
String oaid;
String vaid;
String aaid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvContent = findViewById(R.id.tv);
MdidSdkHelper.InitSdk(getApplicationContext(), true,this);
//结果是异步返回的,使用时为空的话可以先休眠几秒
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("OAID: "+oaid);
System.out.println("VAID: "+vaid);
System.out.println("AAID: "+aaid);
} @Override
public void OnSupport(boolean b, IdSupplier idSupplier) {
if(idSupplier==null) {
return;
}
oaid=idSupplier.getOAID();
vaid=idSupplier.getVAID();
aaid=idSupplier.getAAID(); StringBuilder builder=new StringBuilder();
builder.append("support: ").append(idSupplier.isSupported()?"true":"false").append("\n");
builder.append("OAID: ").append(oaid).append("\n");
builder.append("VAID: ").append(vaid).append("\n");
builder.append("AAID: ").append(aaid).append("\n"); String idstext=builder.toString();
Log.d("SdkDemo: ", idstext);
onIdsAvalid(idstext);
} public void onIdsAvalid(@NonNull final String ids) {
runOnUiThread(new Runnable() {
@Override
public void run() {
tvContent.setText(ids);
}
});
}
}

可能遇到的问题

OAID的返回是异步的,所以有时候可能执行完还没返回,这时候使用就会出问题了,建议在使用前先判空,若为空值先睡一会儿

替代方案

这里还有两个替代方案推荐

https://github.com/shuzilm-open-source/Get_Oaid_CNAdid

https://github.com/gzu-liyujiang/Android_CN_OAID

APK下载

这里提供一个编译好的apk,可以在机器上试试效果,在我安卓11的小米手机上测试通过,无需任何权限,可以放心安装。

https://pan.baidu.com/s/1vRYPJ5zSVm87LYbxiyV-VQ 提取码:2gr9

写在最后

有什么问题欢迎在评论区指出,后续也会跟随SDK的新版本持续更新,如果觉得这篇博客有帮到你,不妨点个赞再走呢。

Android OAID 获取 基于MSA oaid_sdk_1.0.25.zip的更多相关文章

  1. Android开发 - 获取Android设备的唯一标识码(Android 6.0或更高)

    在我们的APP开发中,通常需要获取到设备的唯一标识.在Android6.0之前,有很多方法我们可以方便获取到硬件的唯一标识,但是在Android6.0之后,Android系统大幅限制了我们获取设备的硬 ...

  2. 谈谈基于OAuth 2.0的第三方认证 [下篇]

    从安全的角度来讲,<中篇>介绍的Implicit类型的Authorization Grant存在这样的两个问题:其一,授权服务器没有对客户端应用进行认证,因为获取Access Token的 ...

  3. 谈谈基于OAuth 2.0的第三方认证 [中篇]

    虽然我们在<上篇>分别讨论了4种预定义的Authorization Grant类型以及它们各自的适用场景的获取Access Token的方式,我想很多之前没有接触过OAuth 2.0的读者 ...

  4. Android_设备隐私获取,忽略6.0权限管理

    1.前言 (1).由于MIUI等部分国产定制系统也有权限管理,没有相关api,故无法判断用户是否允许获取联系人等隐私.在Android 6.0之后,新增权限管理可以通过官方api判断用户的运行状态: ...

  5. Android实现获取本机中所有图片

    本示例演示如何在Android中使用加载器(Loader)来实现获取本机中的所有图片,并进行查看图片的效果. 在这个示例中,我使用android-support-v4.jar中的加载器(Loader) ...

  6. android开发获取网络状态,wifi,wap,2g,3g.工具类(一)

    android开发获取网络状态整理: package com.gzcivil.utils; import android.content.Context; import android.net.Con ...

  7. 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)

                 分类: Android 系统开发(5)                                              作者同类文章X 版权声明:本文为博主原创文章 ...

  8. [深度应用]·首届中国心电智能大赛初赛开源Baseline(基于Keras val_acc: 0.88)

    [深度应用]·首届中国心电智能大赛初赛开源Baseline(基于Keras val_acc: 0.88) 个人主页--> https://xiaosongshine.github.io/ 项目g ...

  9. Android开发 获取视频中的信息(例如预览图或视频时长) MediaMetadataRetriever媒体元数据检索器

    前言 在Android里获取视频的信息主要依靠MediaMetadataRetriever实现 获取最佳视频预览图 所谓的最佳就是MediaMetadataRetriever自己计算的 /** * 获 ...

  10. Android消息传递之基于RxJava实现一个EventBus - RxBus

    前言: 上篇文章学习了Android事件总线管理开源框架EventBus,EventBus的出现大大降低了开发成本以及开发难度,今天我们就利用目前大红大紫的RxJava来实现一下类似EventBus事 ...

随机推荐

  1. java英文字符串首字母大写

    java英文字符串首字母大写 /** * 首字母大写 * @param string * @return */ public static String toUpperCase4Index(Strin ...

  2. 2021-04-30:一条直线上有居民点,邮局只能建在居民点上。给定一个有序正数数组arr,每个值表示 居民点的一维坐标,再给定一个正数 num,表示邮局数量。选择num个居民点建立num个 邮局,使

    2021-04-30:一条直线上有居民点,邮局只能建在居民点上.给定一个有序正数数组arr,每个值表示 居民点的一维坐标,再给定一个正数 num,表示邮局数量.选择num个居民点建立num个 邮局,使 ...

  3. 2021-05-18:Nim博弈。给定一个正数数组arr,先手和后手每次可以选择在一个位置拿走若干值, 值要大于0,但是要小于该处的剩余。谁最先拿空arr,谁赢。根据arr,返回谁赢 。

    2021-05-18:Nim博弈.给定一个正数数组arr,先手和后手每次可以选择在一个位置拿走若干值, 值要大于0,但是要小于该处的剩余.谁最先拿空arr,谁赢.根据arr,返回谁赢 . 福大大 答案 ...

  4. 2021-12-09:二叉树展开为链表。 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左

    2021-12-09:二叉树展开为链表. 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左 ...

  5. 玩转服务器之环境篇:PHP和Python环境部署指南

    前几篇文章中讲解了如何搭建docker和Java Web环境的方法,本篇文章来教大家搭建一个好的PHP和Python环境,可以帮助开发和运行PHP和Python应用程序,使其更加高效和稳定. 一. P ...

  6. 报错HTTP 405 Method Not Allowed, Allow: POST, OPTIONS, "detail": "方法 “GET” 不被允许。"

    当测试注册功能是否实现时,出现了这种情况的405:HTTP 405 Method Not AllowedAllow: POST, OPTIONSContent-Type: application/js ...

  7. Error in nextTick: "TypeError: Right-hand side of 'instanceof' is not an object"

    发生这种情况,直接去查看 props 对象是否  类型正确 props 有 大概两种 写法吧, 一种就是对象形 ,一种是数组形 // 对象形props: { show: { type: Boolean ...

  8. 前端学习 node 快速入门 系列 —— 事件循环

    事件循环 本篇将对以下问题进行讨论: 浏览器有事件循环,node 也有事件循环,两者有什么异同? node 核心特性(事件驱动和非阻塞 I/O )和事件循环有什么关系? node 中的高并发和高性能和 ...

  9. 2019年蓝桥杯C/C++大学B组省赛真题(特别数的和)

    题目描述: 小明对数位中含有2.0.1.9 的数字很感兴趣(不包括前导0) 在1到40中这样的数包括1.2.9.10 至32.39 和40,共28 个,他们的和是574. 请问,在1到n 中,所有这样 ...

  10. CSS文本过长时设置省略号

    写页面时很多时候会遇到一个容器中文本内容超出,使用overflow : hidden;,但是跟用户体验不太友好,设置overflow : scroll; 会出现滚动看着也不爽,所以我就想使用css 设 ...