代码已过时,但是官方文档还在更新,一切问题请学习官方文档。
1 什么是OAID?用来做什么的?
随着大数据和人工智能时代的到来,数据的价值也逐渐增加,移动终端设备标识码,如国际移动设备识别码(IMEI)、Wi-Fi MAC地址、SIM卡国际移动用户识别码(IMSI)和蓝牙地址等终端设备标识信息的收集和使用成为普遍现象。同时各国对用户隐私保护的要求越来越高,传统的移动终端设备标识如国际移动设备识别码(IMEI)等已被部分国家认定为用户隐私的一部分。另外,在很多与隐私无关的场景中,如生产、售后、报关、政府抽检等场景,传统设备标识码(如IMEI)被篡改或冒用的情况时有发生,给设备生产企业的经济利益带来损失,同时对设备追溯带来较大影响。
总结:为了保护隐私,使用OAID(匿名设备标识符)来替代IMEI
2 那么如何获取OAID?即使文章过期但是官网还在就可以更新
下载的时候需要登录,随便注册一个账号不用花钱就可以下载依赖包了。
解压完之后可以看到一个pdf文件,里面是详细的教程,建议大家看下如何使用,如果不想仔细看的话等会可以直接看demo
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
OaidHelper.getInstance().attachBaseContext(base);
}
@Override
public void onCreate() {
super.onCreate();
OaidHelper.getInstance().getDeviceIds(this);
}
}
public class OaidHelper {
private static final OaidHelper ourInstance = new OaidHelper();
public static OaidHelper getInstance() {
return ourInstance;
}
private OaidHelper() {
}
public void attachBaseContext(Context base) {
JLibrary.InitEntry(base);
}
public void getDeviceIds(Context context) {
//获取OAID等设备标识符
MiitHelper miitHelper = new MiitHelper(appIdsUpdater);
miitHelper.getDeviceIds(context);
}
private List<OaidListener> mListener = new ArrayList<>();
public void addOaidListener(OaidListener listener) {
if (listener != null) {
mListener.add(listener);
}
}
public interface OaidListener {
void onOaid(String oaid);
}
private MiitHelper.AppIdsUpdater appIdsUpdater = new MiitHelper.AppIdsUpdater() {
@Override
public void onOaid(boolean isSupport, @NonNull String oaid) {
Log.i("OaidHelper oaid=== ", oaid);
if (!isSupport || TextUtils.isEmpty(oaid)) {
return;
}
for (int i = 0; i < mListener.size(); i++) {
mListener.get(i).onOaid(oaid);
}
}
@Override
public void onError(@NonNull String error) {
Log.i("OaidHelper error===", error);
}
};
}
具体的使用请看我的demo Oaiddemo github