自己項目中遇到了一個獲取oaid的需求,看了下該作者的demoAndroid獲取OAID博客地址
感謝作者的同時自己也對這個demo進行了優化,結尾附上自己的項目github地址
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